使用T-sql获取当月的最后一个星期一

nic*_*wdy 4 sql t-sql sql-server-2008

我知道这是一个非常普遍的问题,但是有没有人知道检查日期是否是使用T-SQL的月份的最后一个星期一的好方法.我需要在存储过程中使用它来确定存储过程是返回数据还是什么都不做.

干杯!

Kla*_*sen 7

1如果当前日期是该月的最后一个星期一,则返回以下选择,0如果不是.

select 
 case 
 when datepart(dw, GETDATE()) = 2 and DATEPART(month, DATEADD(day, 7, GETDATE())) <> DATEPART(month, GETDATE())
 then 1
 else 0
 end
Run Code Online (Sandbox Code Playgroud)

datepart(dw, GETDATE())返回星期几.星期一是2.第二部分在当前日期增加了7天,并检查月份在7天内是否发生了变化(如果没有,则不是最后一个星期一).

GETDATE()'s 更改为您要检查的任何日期.

编辑:

您可以将其变为通用函数,并在您喜欢的任何日期使用它:

CREATE FUNCTION 
IsLastMondayOfMonth(@dateToCheck datetime)
RETURNS bit
AS
BEGIN
DECLARE
@result bit

SELECT @result =
    CASE  
       WHEN datepart(dw, @dateToCheck) = 2 AND DATEPART(month, DATEADD(day, 7, @dateToCheck)) <> DATEPART(month, @dateToCheck)
    THEN 1
 ELSE 0
 END
 RETURN @result
END
Run Code Online (Sandbox Code Playgroud)