【发布时间】:2017-10-31 22:39:40
【问题描述】:
我正在使用这个 sql 代码来计算没有周末和节假日的工作日。如果生日日期在 sDate 和 eDate 之间,我该如何减去与生日“B”不同的每个事件类型的生日日期?
SELECT
evt.[Name],
evt.[type],
evt.sDate,
evt.eDate,
DATEDIFF(DD, evt.sDate, evt.eDate) + 1
- (DATEDIFF(WK, evt.sDate, evt.eDate) * 2)
- CASE WHEN DATEPART(DW, evt.sDate) = 1 THEN 1 ELSE 0 END
+ CASE WHEN DATEPART(DW, evt.eDate) = 1 THEN 1 ELSE 0 END
- (SELECT COUNT(*) FROM tblHolidays AS h WHERE h.Data BETWEEN evt.sDate AND evt.eDate) as date_diff
-- subtract birthday date if between sDate and eDate
FROM tblEvents AS evt
WHERE YEAR(sDate) = YEAR(getdate())
AND MONTH(sDate) = 12
ORDER BY evt.[Name]
事件表: 生日列显示是否应从 date_diff 中减去该值
【问题讨论】:
-
标记您正在使用的 dbms。该查询是特定于产品的。
-
所需输出的格式是什么?
-
我刚刚替换了表格以添加列“date_diff_final”。所需的列名称是浅蓝色的,但 date_diff (实际)的值应等于 date_diff_final (不包括生日)。我希望我是清楚的!
标签: sql-server