@日期 是给定的那个日期
select min(日期) from tab where 日期>=@日期

解决方案 »

  1.   

    --如果是要将日期转换成工作日declare @日期 datetime
    set @日期='2004-5-8'select case datepart(weekday,@日期) 
    when 1 then dateadd(day,1,@日期)
    when 7 then dateadd(day,2,@日期)
    else @日期 end
      

  2.   

    select min(日期) from tab where 日期>=datepart(weekday,@日期)
      

  3.   

    select min(dd) from
    (select a.d,a.w dd from #temp a join tab b on a.w=b.日期) t1
    where t1.d<(select case datepart(weekday,@日期) 
    when 1 then 8
    else datepart(weekday,@日期)
    end)
      

  4.   

    csdn能删自己的回复吗?select min(dd) from
    (select a.d,a.w dd from #temp a join tab b on a.w=b.日期) t1
    where t1.d>=(select case datepart(weekday,@日期) 
    when 1 then 8
    else datepart(weekday,@日期)
    end)
      

  5.   

    谢谢eru() 的大力支持,我可能说的还不明白。
    数据库中的工作日可能只有几(从1到5)天(是由单位具体定的),并不是通常的工作日。
      

  6.   

    to jiangchuandong(奋斗成男人) :请举例说明,谢谢。我也知道用case,但是里面应该有个算法吧。
      

  7.   

    --sorry,那天晚上喝了点,迷迷糊糊的,本来有个临时表的,忘了贴了
    --再写一遍吧create table #temp
    (
    d int,
    dd varchar(10)
    )--如果下面“星期一.....”这些字段值和你的工作日表中不一样,就改过来
    insert into #temp values(2,'星期一')
    insert into #temp values(3,'星期二')
    insert into #temp values(4,'星期三')
    insert into #temp values(5,'星期四')
    insert into #temp values(6,'星期五')
    insert into #temp values(7,'星期六')
    insert into #temp values(8,'星期日')declare @日期 datetime --你要查询的日期--tab为工作日表select min(dd) from
    (select a.d,a.w dd from #temp a join tab b on a.w=b.日期) t1
    where t1.d>=(select case datepart(weekday,@日期) 
    when 1 then 8
    else datepart(weekday,@日期)
    end)