Следующий выбор вернет 1
, если текущая дата - последний понедельник месяца, и 0
, если нет.
select
case
when datepart(dw, GETDATE()) = 2 and DATEPART(month, DATEADD(day, 7, GETDATE())) <> DATEPART(month, GETDATE())
then 1
else 0
end
datepart(dw, GETDATE())
возвращает день недели. Понедельник - 2. Вторая часть добавляет 7 дней к текущей дате и проверяет, что в течение 7 дней месяц изменился (если это не так, это не последний понедельник).
Измените GETDATE()
на любую дату, которую вы хотите проверить.
EDIT:
Вы можете превратить его в универсальную функцию и использовать с любой датой, которая вам нравится:
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