我正在尝试计算2个日期和时间之间的天数,但需要在19:00而不是00:00截止
select datediff (dd, '2019-03-14 19:28:00','2019-03-19 10:07:00'),
datediff (dd, '2019-03-14 19:34:00','2019-03-22 10:20:00'),
datediff (dd, '2019-03-14 17:13:00','2019-03-25 19:17:00')
我希望得到以下结果:
'2019-03-14 19:28:00','2019-03-19 10:07:00' = 4, has only passed the 19:00 cut off 4 times.
'2019-03-14 19:34:00','2019-03-22 10:20:00' = 7
'2019-03-14 17:13:00','2019-03-25 19:17:00' = 12
由于SQL将截止时间设为00:00,因此SQL分别将其计算为5、8、11
答案 0 :(得分:1)
只需添加五个小时:
select datediff(day, dateadd(hour, 5, s), dateadd(hour, 5, e))
from (values ('2019-03-14 19:28:00', '2019-03-19 10:07:00'),
('2019-03-14 19:34:00','2019-03-22 10:20:00'),
('2019-03-14 17:13:00','2019-03-25 19:17:00')
) v(s, e);
或等效地,减去19小时:
select datediff (day, dateadd(hour, -19, s), dateadd(hour, -19, e))
from (values ('2019-03-14 19:28:00', '2019-03-19 10:07:00'),
('2019-03-14 19:34:00','2019-03-22 10:20:00'),
('2019-03-14 17:13:00','2019-03-25 19:17:00')
) v(s, e);
答案 1 :(得分:0)
如果您想使用19:00进行DATEDIFF,就好像是00:00,只需从所有datetime值中减去19小时,然后对它进行DATEDIFF。