我基本上是以天数格式计算两个日期之间的差异:小时:分钟:秒
CONVERT(varchar, datediff (s, [CreatedDate], [ClosedDate]) / (60 * 60 * 24)) + ':' + CONVERT(varchar, dateadd(s, datediff (s, [CreatedDate], [ClosedDate]), CONVERT(datetime2, '0001-01-01')), 108) AS Length
当CreatedDate和ClosedDate在DATETIME2中时,上述工作。
但是当他们在DATETIME时给我这个错误:
导致将varchar数据类型转换为日期时间数据类型 在超出范围的价值。
CONVERT(varchar, datediff (s, [CreatedDate], [ClosedDate]) / (60 * 60 * 24)) + ':' + CONVERT(varchar, dateadd(s, datediff (s, [CreatedDate], [ClosedDate]), CONVERT(datetime, '0001-01-01')), 108) AS Length
我该如何解决这个问题?
答案 0 :(得分:1)
一种方法是获取日期之间的秒数,使间隔“实际上是从零开始的日期时间:
dateadd(second, datediff(second, [CreatedDate], [ClosedDate]), 0)
然后将其转换为“dd hh:mi:ss”格式:
right(convert(varchar(255),
dateadd(second, datediff(second, [CreatedDate], [ClosedDate]), 0)
120), 11)
在SQL Server 2012+中,您可以使用format()
。