我有一个SQL表,它有两列ID(int(和CreateDate(DateTime(类型。我想过滤给定月份每个星期四的所有ID,无论我选择1月、2月、3月等…
如果我理解正确,DATEPART函数可能会帮助您做到这一点。
如果您想比较其他信息,则可以在从DateTime返回工作日的第一个参数中使用weekday
。DATEPART
可能会帮助您进行比较。
SELECT *
FROM T
WHERE
DATEPART ( weekday , CreateDate ) = 5
对于给定月份的每个星期四
首先对月/年日期范围进行筛选,以减少结果数量并保持可搜索性。然后使用datePart来识别所选范围内的星期四。
db<gt;小提琴
-- Assumes SET DATEFIRST 7
SELECT *
FROM YourTable
WHERE CreateDate >= '2022-01-01'
AND CreateDate < '2022-02-01'
AND DatePart(dw, CreateDate) = 5
请注意,Datepart(dw(的结果可能会因@@DATEFIRST设置而异。查询的确定版本是:
SELECT *
FROM YourTable
WHERE CreateDate >= '2022-01-01'
AND CreateDate < '2022-02-01'
AND ((DatePart(dw, CreateDate) + @@DATEFIRST-1) % 7+1) = 5