筛选给定月份的每个星期四的查询结果



我有一个SQL表,它有两列ID(int(和CreateDate(DateTime(类型。我想过滤给定月份每个星期四的所有ID,无论我选择1月、2月、3月等…

如果我理解正确,DATEPART函数可能会帮助您做到这一点。

如果您想比较其他信息,则可以在从DateTime返回工作日的第一个参数中使用weekdayDATEPART可能会帮助您进行比较。

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

最新更新