【发布时间】:2018-06-28 16:10:55
【问题描述】:
我使用的是 SQL Server 2008,甚至不知道从哪里开始这个计算。我非常感谢您能提供的任何帮助。
我有两列,StartTime 和 EndTime。我有三个时间范围:早上 12:00 am - 7:59 am,白天 8:00 am 到 3:59(或 15:39)pm,晚上 4:00 pm(或 16:00)到 11:59 (或 23:59)下午。
我想计算属于每个范围的 StartTime 和 EndTime 之间的小时数。比如下面第一行,6:00到17:00之间有11个小时,早上有2个小时,白天有8个小时,晚上有1个小时。所以我想要四列:一个用于 11 小时,一个用于早上、白天和晚上的突破。
StartTime EndTime
2017-10-25 06:00:00.000 2017-10-25 17:00:00.000
2017-10-26 05:30:00.000 2017-10-26 18:00:00.000
2017-10-30 07:00:00.000 2017-10-30 17:30:00.000
2017-11-01 06:00:00.000 2017-11-01 17:30:00.000
2017-10-06 04:00:00.000 2017-10-06 05:00:00.000
2016-04-28 04:00:00.000 2016-04-28 10:00:00.000
2017-06-30 04:00:00.000 2017-07-01 00:00:00.000
2016-01-26 06:30:00.000 2016-01-26 19:00:00.000
2017-08-15 07:00:00.000 2017-08-15 19:30:00.000
2016-01-28 07:00:00.000 2016-01-28 19:30:00.000
想要的结果,使用第一个
NbrHours = 11
MorningHrs = 2
DayHrs = 8
EveningHrs = 1
【问题讨论】:
-
您的日期/时间值总是在同一天吗?那么部分时间呢?你应该展示你想要的结果。
-
感谢您的评论。不,他们并不总是在同一天。对于部分小时,我只想要小时而不是分钟。所以我会用小时来确定它所属的范围。我将更新以显示部分预期结果。进入不同的日子没关系,我只需要三个范围。
标签: sql-server time