考虑一个包含多行日期的表:
Date
------
5/9/2022
5/27/2022
4/18/2022
6/2/2022
7/1/2022
6/6/2022
7/8/2022
7/6/2022
7/22/2022
7/19/2022
7/11/2022
当前查询返回所有行DATE <= GETDATE()+1
因此,它将返回所有日期<=7/9/2022,而实际上需要返回<=7/11/22。这篇专栏文章的日期从来不落在周末或假日。因此,在像星期五这样的日子里,查询应该尝试将所有行<=拉到即将到来的星期一(列或工作日中的下一个日期)。这个查询也有多个where条件。WHERE (_Header.CODE IN ('10', '15')) AND (_Header.LOCATION = '89') AND (_Header.OR_NO > '0') AND (_Header.DATE <= GETDATE()+1)
这将在日期字段中显示今天之后的第二天。它是一个可以在查询中使用的简单的公共表表达式。您只需将所有日期<=从cte中检索到的日期。
with cte(nextDay)
AS (SELECT TOP 1 cal_date FROM calendar
WHERE cal_date > GETDATE()
ORDER BY cal_date)
SELECT * FROM cte