各位老大,怎么用sql求每个月的最后一个周五?谢谢先

解决方案 »

  1.   

    select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,26-datepart(day,getdate()),getdate())),4)
      

  2.   

    DECLARE @s CHAR(20),@nexts CHAR(20),@last6 DATETIME
    SET @s='2006-6'  --假设你要求的年月:求2006年6月最后一个星期五是哪天
    SET @s=RTRIM(@s)+'-1'
    SET @nexts=DATEADD(m,1,@s)
    SET @nexts=DATEADD(d,-1,RTRIM(YEAR(@nexts)) + '-' + RTRIM(MONTH(@nexts)) + '-1')
    SELECT @last6=DATEADD(d,-(DATEPART(WEEKDAY,@nexts)+1),@nexts)
    SELECT DATENAME(WEEKDAY,@last6),@last6
      

  3.   

    create function f_getlastFriday(
    @chr varchar(7)
    ) returns datetime
    as
    begin
    declare @re datetime
    select @re=dateadd(day,-1,dateadd(month,1,@chr+'-01'))
    while datepart(dw,@re)<>6
    select @re=Dateadd(day,-1,@re)
    return(@re)
    end
    go调用示例:
    select dbo.f_getlastFriday('2006-05')
      

  4.   

    --改良一下,可以用参数declare @date datetimeset @date=getdate()select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,26-datepart(day,@date),@date)),4)
      

  5.   

    參看這里
    http://jinliangliu.cnblogs.com/archive/2006/06/19/429559.html