我有一个日期范围,即开始日期2017年5月19日至结束日期2017年5月25日。我希望得到他们之间计算的小时数而不包括周末,即星期五和星期六。 例如:
7天有7 * 24 = 168小时 除周五和周六外5天将提供120小时。
可以在另一个查询中使用的任何函数吗?
答案 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')