我试图在 SQL Server 中选择比当前日期晚 3 天的记录,但我需要排除周末(周六和周日)。
以下 SQL 脚本可用于选择超过 3 天的记录:
select * from [dbo].[tb_Schedule]
WHERE date >= DATEADD(day, -3, GETDATE())
但问题是我不知道如何排除周末。
我知道下面的Where子句用于排除周末,但我不知道如何在上面的where子句中实现它
WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7) NOT IN (0, 1)
请协助我如何选择超过 3 天但不包括周末的记录。谢谢
最佳答案
这是一个公式,其中包含有关如何排除周末的示例。正如我们之前提到的,请考虑使用日历表,因为您可能希望排除节假日。
SELECT calDate,
DATENAME( dw, calDate),
DATEADD( DD, -( 3 + CASE WHEN DATEDIFF( DD, '19000106', calDate)%7 <= 2 THEN DATEDIFF( DD, '19000106', calDate)%7
WHEN DATEDIFF( DD, '19000106', calDate)%7 = 3 THEN 2
ELSE 0 END), calDate)
FROM (VALUES( CAST( '20190201' AS date)),
( CAST( '20190202' AS date)),
( CAST( '20190203' AS date)),
( CAST( '20190204' AS date)),
( CAST( '20190205' AS date)),
( CAST( '20190206' AS date)),
( CAST( '20190207' AS date)),
( CAST( '20190208' AS date)),
( CAST( '20190209' AS date)),
( CAST( '20190210' AS date)),
( CAST( '20190211' AS date)),
( CAST( '20190212' AS date)),
( CAST( '20190213' AS date)),
( CAST( '20190214' AS date)),
( CAST( '20190215' AS date)))x(calDate);
关于sql-server - 用于选择超过 3 天但不包括周末(周六和周日)的记录的 Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54655156/