Найти первый, второй и т. Д. День недели в SQL Server - PullRequest
3 голосов
/ 22 июня 2011

У меня есть схема базы данных для создания напоминаний, очень похожих на Outlook. Вы можете создавать еженедельные, ежемесячные и ежегодные напоминания.

Мне нужно найти что-то вроде:

The first Friday of January
The third Wednesday of every 3 months.

Может кто-нибудь сказать, как найти что-то вроде первой, второй, третьей, четвертой и т. Д. Даты в SQL Server 2008?

1 Ответ

1 голос
/ 22 июня 2011

Используйте datepart, чтобы узнать день недели для первого дня месяца:

datepart(weekday, '2011-06-01')

Исходя из этого, вы можете рассчитать первый день недели, например первый понедельник (2):

(2 + 7 - datepart(weekday, '2011-06-01')) % 7 + 1

Чтобы получить второй понедельник, просто добавьте к этому 7 и т. Д.

Чтобы проверить, находится ли дата в том же месяце, вам нужна последняя дата месяца, которую вы можете получить, вычитая день из первого дня следующего месяца:

datepart(day, dateadd(day, -1, '2011-07-01'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...