2014-04-03 36 views
0

我想獲得2個日期時間之間的時間數,但不包括週末時間。獲取不包括週末時間的小時數

讓我們說我有2014-03-28 07:45:00(這是一個星期五)和2014-04-04 09:45:00(這是一個星期五) 我想知道有多少兩個日期之間的時間已過,但不包括週末。

我不知道如何着手,雖然我沒有找到http://www.codersrevolution.com/blog/SQL-Server-How-Many-WorkWeek-Days-In-Date-Range

+0

是它只是在週末你需要排除?公衆假期呢? –

回答

2

上發現平日鏈接創建功能:

create function f_hour_diff (@date1 datetime,@date2 datetime) 
returns int 
as 
begin 
    -- if @date1 happens on the weekend, set to next Monday 12AM 
    if datepart(weekday,@date1) = 1 
     set @date1 = dateadd(day,datediff(day,0,@date1),1) 
    if datepart(weekday,@date1) = 7 
     set @date1 = dateadd(day,datediff(day,0,@date1),2) 

    -- if @date2 happens on the weekend, set to previous Saturday 12AM 
    -- to count all of Friday's hours 
    if datepart(weekday,@date2) = 1 
     set @date2 = dateadd(day,datediff(day,0,@date2),-2) 
    if datepart(weekday,@date2) = 7 
     set @date2 = dateadd(day,datediff(day,0,@date2),-1) 

    -- return number of hours between @date1 and @date1 
    -- subracting the number of weeks between * 48 to take out weekends 
    declare @return int 
    set @return = datediff(hour,@date1,@date2)-(datediff(week,@date1,@date2)*48) 

    -- Return the result of the function 
    return @return 

end 
go 

調用該函數:

select dbo.f_hour_diff('2014-03-28 07:45:00','2014-04-04 09:45:00') 
+0

偉大的答案,你會如何使用這個例子找到分鐘? –

相關問題