计算日期范围内的小时数,不包括sql

时间:2017-05-23 17:35:16

标签: sql sql-server

我有一个日期范围,即开始日期2017年5月19日至结束日期2017年5月25日。我希望得到他们之间计算的小时数而不包括周末,即星期五和星期六。 例如:

7天有7 * 24 = 168小时 除周五和周六外5天将提供120小时。

可以在另一个查询中使用的任何函数吗?

1 个答案:

答案 0 :(得分: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')