如何计算当月距离给定日期还剩几个工作日?

炎炎 80 信誉分
2024-05-24T02:28:07.4566667+00:00

比方说给定日期是2024-05-24,那么该如何计算距离当月底还剩的工作日数,也就说5个工作日(不包含当天)。

似乎不能直接使用Datediff函数,有什么好的解决办法吗?

SQL Server
SQL Server
Microsoft 关系数据库管理和分析系统的一个系列,用于实现电子商务、业务线和数据仓库解决方案。
175 个问题
Transact-SQL
Transact-SQL
ANSI SQL 语言的 Microsoft 扩展,包括过程编程、局部变量和各种支持函数。
23 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. LiHongMSFT-4306 29,031 信誉分
    2024-05-24T02:34:52.56+00:00

    你可以先计算出距离月底还剩几天,再从这些天数中扣除周六周日的天数。

    参考这个语句:

    DECLARE @GivenDate DATE = '2024-05-25'; -- 给定日期
    DECLARE @LastDayOfMonth DATE = EOMONTH(@GivenDate); -- 当月最后一天
    
    WITH DateRange AS 
    (
        SELECT DATEADD(DAY, number - 1, @GivenDate) AS Date
        FROM master.dbo.spt_values
        WHERE type = 'P' AND DATEADD(DAY, number - 1, @GivenDate) <= @LastDayOfMonth
    ),
    WorkDays AS 
    (
        SELECT COUNT(*) AS WorkDayCount
        FROM DateRange
        WHERE DATEPART(WEEKDAY, Date) BETWEEN 2 AND 6 -- 周一到周五
    )
    SELECT WorkDayCount
    FROM WorkDays;
    

    如果答案是正确的解决方案,请点击“接受答案”并投赞成票。如果您对此答案有其他疑问,请点击“评论”。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。