计算 SQL Server 中日期之间的工作日
有效确定两个日期之间的工作日数(周一至周五)对于许多 SQL Server 应用程序至关重要。 这可以使用简洁的 T-SQL 表达式来完成。 以下公式假设标准周一至周五工作周:
<code class="language-sql">SELECT (DATEDIFF(day, @StartDate, @EndDate) + 1) - (DATEDIFF(week, @StartDate, @EndDate) * 2) - CASE WHEN DATENAME(weekday, @StartDate) = 'Sunday' THEN 1 ELSE 0 END - CASE WHEN DATENAME(weekday, @EndDate) = 'Saturday' THEN 1 ELSE 0 END</code>
这里,@StartDate
和@EndDate
代表开始和结束日期。 计算首先找到总天数,然后减去周末天数。 它还处理开始日期是星期日或结束日期是星期六的边缘情况。
例如,使用 @StartDate = '2008/10/01'
和 @EndDate = '2008/10/31'
,表达式产生:
<code>(DATEDIFF(day, '2008/10/01', '2008/10/31') + 1) - (DATEDIFF(week, '2008/10/01', '2008/10/31') * 2) - CASE WHEN DATENAME(weekday, '2008/10/01') = 'Sunday' THEN 1 ELSE 0 END - CASE WHEN DATENAME(weekday, '2008/10/31') = 'Saturday' THEN 1 ELSE 0 END</code>
结果为 21,代表给定日期之间的 21 个工作日。
请记住:此计算不考虑公共假期。 对于包括假期在内的更全面的解决方案,需要涉及假期表的更复杂的查询。
以上是如何计算SQL Server中两个日期之间的工作日数?的详细内容。更多信息请关注PHP中文网其他相关文章!