【发布时间】:2019-07-17 18:23:59
【问题描述】:
我想减去两个日期时间值和 HH:MM:SS 格式的输出。
如果差异超过一天,则需要将天数添加到小时。
我尝试连接 datediff 输出,如下所述
select concat(datediff(hh, '2019-07-16 04:45:03.000','2019-07-17 19:38:13.000')
,':',
(datediff(mi, '2019-07-16 04:45:03.000','2019-07-17 19:38:13.000') -(datediff(hh, '2019-07-16 04:45:03.000','2019-07-17 19:38:13.000')*60))
,':',
(datediff(ss, '2019-07-16 04:45:03.000','2019-07-17 19:38:13.000')-(datediff(mi, '2019-07-16 04:45:03.000','2019-07-17 19:38:13.000')*60)))
预期输出:38:53:10
实际输出:39:-7:10
你能告诉我我犯了什么错误吗?有没有更好的方法来获得所需的输出?
【问题讨论】:
-
time不支持超过 24 小时的值。您最好在几秒钟内返回差异并让您的显示层担心格式或类似问题。您在显示层使用什么应用程序?这就是您应该在此处标记的内容。 -
这似乎是这个问题的重复:stackoverflow.com/questions/10538507/…
-
@Larnu 哦,好的,谢谢。 David Browne 提供的答案效果很好。
-
是的,但是@Venkat 这个解决方案的问题在于它返回了一个
varchar,因此,“时间”'11:00:01'是 after'100:00:00'. -
哦,它使用了
FORMAT,(老实说)它的表现非常糟糕。
标签: sql-server function datetime formatting azure-sql-managed-instance