SQL Server如何从日期列筛选周一和周五对应的数据
SQL Server 查询周一和周五对应数据的实现方案
你可以使用SQL Server内置的日期函数筛选符合星期要求的数据,以下是不同场景的实现写法:
基础适用写法(默认服务器配置)
SQL Server默认@@DATEFIRST = 7(即每周第一天为周日),此时周一的星期序号为2、周五的星期序号为6,直接筛选即可:
SELECT Ticker, ISIN, [Date], Price FROM dbo.tblNAV WHERE DATEPART(WEEKDAY, [Date]) IN (2, 6)
注:
Date是SQL Server保留关键字,所以用方括号包裹避免语法报错。
通用兼容写法(不受服务器周起始配置影响)
如果不确定服务器的周起始设置,可以用以下写法消除配置差异的影响,该写法固定将周一视为每周第一天,通过偏移计算统一筛选逻辑:
SELECT Ticker, ISIN, [Date], Price FROM dbo.tblNAV WHERE DATEPART(WEEKDAY, [Date] + @@DATEFIRST - 1) IN (1, 5)
直观匹配写法
如果你不想记忆序号对应关系,也可以用DATENAME函数直接匹配星期名称,根据你的SQL Server语言版本选择对应写法:
- 英文版本SQL Server适用:
SELECT Ticker, ISIN, [Date], Price FROM dbo.tblNAV WHERE DATENAME(WEEKDAY, [Date]) IN ('Monday', 'Friday')
- 中文版本SQL Server适用:
SELECT Ticker, ISIN, [Date], Price FROM dbo.tblNAV WHERE DATENAME(WEEKDAY, [Date]) IN ('星期一', '星期五')
内容的提问来源于stack exchange,提问作者K saman
相关产品推荐
相关产品推荐

