【发布时间】:2018-10-12 14:43:32
【问题描述】:
我已经填写了一个日历表(Calendar_Date, Is_Business_Day)。
我已经在此基础上做了一个SELECT:
- 如果今天是在当月的第 3 天之前,则选择该天之前的所有天,直到倒数第二个月的最后一天
例如:今天是2018-05-02,这是我的输出:
Calendar_Date | Is_Business_Day
2000-01-01 | 0
... |
2018-03-29 | 1
2018-03-30 | 1
2018-03-31 | 0
- 如果今天在当月的第 3 天之后,请选择该天之前到上个月最后一天的所有天数。
例如:明天,2018-05-03,这将是我的输出:
Calendar_Date | Is_Business_Day
2000-01-01 | 0
... |
2018-04-28 | 0
2018-04-29 | 0
2018-04-30 | 1
这是我的查询:
SELECT Calendar_Date, Is_Business_Day
FROM Calendar_Table
WHERE (Calendar_Date <= (CASE WHEN DATEPART(day, GETDATE()) >= 3 THEN EOMONTH(DATEADD(MONTH, - 1, GETDATE())) ELSE EOMONTH(DATEADD(MONTH, - 2, GETDATE())) END))
这工作得很好,但我现在想做的是在每月第三天之后的第一个工作日之后切换,而不是在每月第三天之后切换.
如何使用日历表中有关工作日的信息来执行此操作?
【问题讨论】:
-
不将
AND Is_Business_Day = 1添加到WHERE子句中吗?您的问题不清楚,因为您问的是“切换”,而没有在问题中的任何其他地方解释您所说的“切换”。 -
当我添加
AND Is_Business_Day = 1时,我的选择中只有工作日,但我也希望有非工作日。
标签: sql sql-server date calendar where