2017-05-23 10 views
-1

開始日、つまり開始日19/05/2017、終了日25/05/2017があります。私は週末、金曜日と土曜日を含まずにそれらの間で計算された時間を取得したい。 例:数値を計算するSQLの週末を除く日付範囲からの時間

7日間※7 = 24 = 168時間 金曜日を除く5日間、土曜日は120時間です。

別のクエリで使用できる関数はありますか?

+0

どのrdbmsを使用していますか? – SqlZim

+2

重複:[2つの日付間の就業日数をカウントする](https://stackoverflow.com/questions/252519/count-work-days-between-two-dates) – streetturtle

+0

Sql server 2012 – Javaid

答えて

0
create function dbo.GetHoursWithoutWeekends (@date1 date, @date2 date) 
returns int 
as 
begin 

    declare @hours int 


    set @hours = 24 * (DATEDIFF(day, @date1, @date2) + 1 - (
               select 
                count(DATEADD(day, t.Rbr - 1, @date1)) as WeekEndCount 
               from (
                select 
                 ROW_NUMBER() over (order by sc1.name) as Rbr 
                from sys.syscolumns sc1 
                 cross join sys.syscolumns sc2 
               ) t 
               where DATEADD(day, t.Rbr - 1, @date1) between @date1 and @date2 
                and DATEPART(weekday, DATEADD(day, t.Rbr - 1, @date1)) in (5, 6) 
              )); 

return @hours; 

end 
GO 

set datefirst 1 

select dbo.GetHoursWithoutWeekends ('20170519', '20170525') 
+0

ありがとう、それは完璧に動作します – Javaid

関連する問題