SQL語句計算兩個日期之間有多少個工作日的方法

2022-09-29 05:18:09 字數 1497 閱讀 4925

/*

因為工作中乙個奇怪的需求,要用sql語言計算兩個日期間有多少個工作日。

設定是乙個星期有5個工作日,從星期一到星期五

說明:  第乙個星期的工作日數:datepart(dw, @begdt)-datepart(dw, @begdt),最少0天

末乙個星期的工作日數:datepart(dw, @enddt程式設計客棧),最多5天

計算方法:

如果兩個日期處在同乙個星期內,直接計算「第乙個星期的工作日數」

&kgmatnbsp; 否則按下面的公式計算

(兩個日期間的總天數kgmat - 第乙個星期的天數 - 末乙個星期的天數) / 7 * 5

+ 第乙個星期的工作日數

+ 末乙個星期的工作日數

*/--計算並返回兩個日期間的工作小時數(工作日*8)按周一到周五計算

--必須先set datefirst 1

create function dbo.calcworkhours(@bdate datetime, @edate datetime)

returns integer

as begin

declare @hours integer

if @@datefirst <> 1 or @bdate > @edate

return -1

select @hours =

--如果終止日期與起始日期在同乙個星期內,只需要計算有幾天即可

case when datepart(wk, @edate-1)-datepart(wk,@bdate) = 0 then

case when datepart(dw, @bdate) > 5 then 0

when datepart(dw, @edate-1) > 5 then 6 - datepart(dw, @bdate)

ewww.cppcns.comlse datepart(dw, @edate-1) - datepart(dw, @bdate) + 1 end

--如果終止日期與起始日期在不同的星期內

--首先計算出除前後兩個星期外完整的星期數 * 5

else (datediff(dd,@bdate,@edate)

- (8-datepart(dw, @bdate))

- datepart(dw, @edate-1)) / 7 * 5

--再加上第乙個星期裡的工作日數

+ case when datepart(dw, @bdate) < 6 then 6 - datepart(dw, @bdate)

else 0 end

--加上末乙個星期裡的工作日數

+ case when datepart(dw, @edate-1)>5 then 5 else datepart(dw, @edate-1) end

end * 8

return @hours

end本文標題: sql語句計算兩個日期之間有多少個工作日的方法

本文位址: /shujuku/mssql/129122.html

Python計算兩個日期之間天數

有的時候要統計兩個日期之間的相距天數,可能有很多種方法,但使用datetime模組的datetime方法無疑是裡面比較簡單的,具體 如下 import datetime d1 datetime.datetime 2018,10,31 第乙個日期 d2 datetime.datetime 2019,0...

計算兩個日期之間的天數

問題描述 給定兩個日期,計算相差的天數。比如2010 1 1和2010 1 3相差2天。時間限制 1000 記憶體限制 65536 輸入共兩行 第一行包含三個整數startyear,startmonth,startday,分別是起始年 月 日。第二行包含三個整數endyear,endmonth,en...

SQL計算兩個日期之間的工作天數

if exists select from dbo.sysobjects where id object id n tb holiday andobjectproperty id,n isusertable 1 drop table tb holiday go 定義節假日表 create table...