使用 SQL Server 计算两个日期之间工作日的天数
在数据分析和报表生成中,确定两个给定日期之间工作日的天数是一项常见任务。在 SQL Server 中,可以使用 T-SQL 高效地执行此计算。
查询:
要计算两个日期之间(周一至周五)的工作日数,请执行以下查询:
<code class="language-sql">DECLARE @StartDate DATETIME; DECLARE @EndDate DATETIME; SET @StartDate = '2008/10/01'; SET @EndDate = '2008/10/31'; SELECT (DATEDIFF(dd, @StartDate, @EndDate) + 1) -(DATEDIFF(wk, @StartDate, @EndDate) * 2) -(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END) -(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END);</code>
说明:
DATEDIFF(dd, @StartDate, @EndDate) 1
计算两个日期之间包括起始日期和结束日期在内的总天数。DATEDIFF(wk, @StartDate, @EndDate) * 2
从总天数中减去周末的天数(每星期 2 天)。-(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)
调整起始日期为周日的情况。-(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END)
调整结束日期为周六的情况。其他考虑因素:
要将节假日包含在计算中,需要创建一个单独的表来定义节假日日期,并将其加入到查询中。这需要额外的逻辑来减去指定期间内包含的节假日数量。
以上是如何计算 SQL Server 中日期之间的工作日?的详细内容。更多信息请关注PHP中文网其他相关文章!