要求当录入当天日期判断出然后显示出日期属于该月第几周
并显示该周 周开始日期、周结束日期
如录入:2011-03-28
显示结果为
 周数  开始日期    结束日期
第5周  2011-03-27  2011-04-02
麻烦高手写个存储过程

解决方案 »

  1.   

    SQL Server 日期算法一周的第一天
    select @@DATEFIRST一个月的第一天  
    select dateadd(mm,datediff(mm,0,getdate()),0)本周的星期一  
    select dateadd(wk,datediff(wk,0,getdate()),0)一年的第一天  
    SELECT  DATEADD(yy,  DATEDIFF(yy,0,getdate()),  0)  季度的第一天  
    SELECT  DATEADD(qq,  DATEDIFF(qq,0,getdate()),  0)  当天的零时
    SELECT  DATEADD(dd,  DATEDIFF(dd,0,getdate()),  0)  上个月的最后一天  :本月第一天减2ms.
    SELECT  dateadd(ms,-2,DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0))  本月的最后一天  
    SELECT  dateadd(ms,-2,DATEADD(mm,  DATEDIFF(m,0,getdate())+1,  0)) 本月的第一个星期一     去掉时分秒  
    DATEADD(day,  DATEDIFF(day,0,getdate()),  0)  
    显示星期几  
    select  datename(weekday,getdate())    
    如何取得某个月的天数  
    SELECT  Day(dateadd(ms,-3,DATEADD(mm,  DATEDIFF(m,0,getdate())+1,  0)))  判断是否闰年:  
    SELECT  case  day(dateadd(mm,  2,  dateadd(ms,-3,DATEADD(yy,  DATEDIFF(yy,0,getdate()),  0))))  
    when  28  then  '平年'  else  '闰年'  end  
    一个季度多少天  
    declare  @m  tinyint,@time  smalldatetime  
    select  @m=month(getdate())  
    select  @m=case  when  @m  between  1  and  3  then  1  
                           when  @m  between  4  and  6  then  4  
                           when  @m  between  7  and  9  then  7  
                           else  10  end  
    select  @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01'  
    select  datediff(day,@time,dateadd(mm,3,@time)) 
      

  2.   

    declare @date datetime
    set @date = '2011-03-28'
    select
    周数 = N'第' + ltrim(DATEPART(week,@date)-DATEPART(week,DATEADD(day, -datepart(day, @date), @date))+1) + N'周',
    开始日期 = convert(char(10), dateadd(wk,datediff(wk,0,@date),0), 121),
    结束日期 = convert(char(10), dateadd(day, 6, dateadd(wk,datediff(wk,0,@date),0)), 121)
    /*
    周数 开始日期 结束日期
    第5周 2011-03-28 2011-04-03
    */
      

  3.   

    参考:
    http://www.cnblogs.com/insus/articles/1622988.html
      

  4.   


    感谢,非常感谢。你这个好用。但存在点小问题,如果录入‘2011-03-29’是3月第5周--正确,录入4月2日显示4月第一周-不太好,如果能显示3月第5周就好了。
    具体日期函数没搞明白,在研究研究,不过我要的这种效果出来了,可以用了
    declare @date datetime
    set @date = '2011-04-2'    select 周数 = N'第' + ltrim(DATEPART(week,@date)-DATEPART(week,DATEADD(day, -datepart(day, @date), @date))+1) + N'周',
        开始日期 = convert(char(10), dateadd(wk,datediff(wk,0,@date),0), 121),
        结束日期 = convert(char(10), dateadd(day, 6, dateadd(wk,datediff(wk,0,@date),0)), 121)
    union
        select 周数 = N'第' + ltrim(DATEPART(week,@date)-DATEPART(week,DATEADD(day, -datepart(day, @date), @date))+2) + N'周',
        开始日期 = convert(char(10), dateadd(wk,datediff(wk,0,@date),7), 121),
        结束日期 = convert(char(10), dateadd(day, 13, dateadd(wk,datediff(wk,0,@date),0)), 121)