在SQL Server中查找一周中的第一天,第二天等

时间:2011-06-22 13:57:48

标签: sql-server sql-server-2008 date

我有一个数据库架构来创建与Outlook非常相似的提醒。您可以创建每周,每月和每年的提醒。

我需要找到类似的东西:

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

有人能告诉我如何在SQL Server 2008中找到类似第一,第二,第三,第四等日期的内容吗?

1 个答案:

答案 0 :(得分:1)

使用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'))