首页 >数据库 >mysql教程 >如何计算 SQL Server 中日期之间的工作日?

如何计算 SQL Server 中日期之间的工作日?

DDD
DDD原创
2025-01-21 23:42:10886浏览

How to Calculate Workdays Between Dates in SQL Server?

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn