SQL Server
Microsoft 关系数据库管理和分析系统的一个系列,用于实现电子商务、业务线和数据仓库解决方案。
175 个问题
比方说给定日期是2024-05-24,那么该如何计算距离当月底还剩的工作日数,也就说5个工作日(不包含当天)。
似乎不能直接使用Datediff函数,有什么好的解决办法吗?
你可以先计算出距离月底还剩几天,再从这些天数中扣除周六周日的天数。
参考这个语句:
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;
如果答案是正确的解决方案,请点击“接受答案”并投赞成票。如果您对此答案有其他疑问,请点击“评论”。