如何使用 SQL 查找当月的最后一个工作日

Fis*_*ury 0 sql sql-server-2008

如何使用 SQL 计算给定日期的当月最后一个工作日?

我能够获得当月的最后一天,但不确定如何以编程方式执行最后一个工作日。

我不想生成日历查找表。

这是我当前使用的每月最后一天代码:

declare @date datetime
set @date='1/4/13'
select DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @date) + 1, 0))
Run Code Online (Sandbox Code Playgroud)

Joh*_*lsh 6

相当巧妙的解决方案:

declare @date1 as date = '20130401'
declare @date as date= eomonth(@date1,0)
set @date = (select case
    when datepart(dw,@date) = 1 then dateadd(day,-2,@date) --when day is a sunday subtract 2 day to friday
    when datepart(dw,@date) = 7 then dateadd(day,-1,@date) --when day is a saturday subtract 1 day to friday
    else @date END)
Run Code Online (Sandbox Code Playgroud)