use*_*933 3 sql t-sql sql-server sql-date-functions
我正在使用SQL Server 2012,我需要我的T-SQL查询来排除特定时期内的特定时间范围。
我的过滤逻辑如下:
2016-07-01提取介于和2017-03-25之间的所有数据2017-07-01,2018-03-25并且排除上述过滤时间内周六和周日的所有日期。
我的T-SQL查询如下:
SELECT * from Table1
WHERE [CreatedOn] between ...
AND DATENAME(dw,[CreatedOn]) NOT IN ('Saturday', 'Sunday')
Run Code Online (Sandbox Code Playgroud)
我被困在如何正确编写逻辑上Line 2!
这对你有用
\n\nSELECT * from Table1\nWHERE \n(\n [CreatedOn] BETWEEN \'2016-07-01\' AND \'2017-03-25\' OR\n [CreatedOn] BETWEEN \'2017-07-01\' AND \'2018-03-25\'\n)\nAND ((DATEPART(dw, [CreatedOn]) + @@DATEFIRST) % 7) NOT IN (0, 1)\nRun Code Online (Sandbox Code Playgroud)\n\n为了知识
\n\n\n\n\nmaster 数据库\xe2\x80\x99s syslanguages 表有一个 DateFirst 列,用于定义特定语言的一周的第一天。SQL\n Server 以美国英语作为默认语言,SQL Server 默认将 DATEFIRST\n 设置为 7(星期日)。我们可以使用以下命令将任意一天重置为一周的第一天
\n
SET DATEFIRST 5\nRun Code Online (Sandbox Code Playgroud)\n\n这会将星期五设置为一周的第一天。
\n\n@@DATEFIRST 返回会话的 SET DATEFIRST 的当前值。
\n\nSELECT @@DATEFIRST\nRun Code Online (Sandbox Code Playgroud)\n\n\n