SQL - datediff 返回小时,但我想在 HH:MM:SS 中添加分钟和秒



我希望调整我现有的代码,以考虑两个datetime值之间经过的分钟和秒数。我目前提取了经过的时间,但最好不是几个小时,而是 HH:MM:SS 格式,但我似乎找不到任何解决我问题的文档。

Select 
convert(datetime, Left(Replace(Create_Date, 'T', ' '), 19)) as CreateDate2,
case 
when Resolution_date = 'None' then '1999-01-01 12:00:00'
when Resolution_date <> 'None' then convert(datetime, left(replace(resolution_date, 'T', ' '), 19))
end as ResolutionDate2,
datediff(hour, convert(datetime, left(replace(Create_Date, 'T', ' '), 19)), 
case 
when Resolution_date = 'None' then '1999-01-01 12:00:00'
when Resolution_date <> 'None' then convert(datetime, left(replace(Resolution_date, 'T', ' '), 19)) 
end) as HoursPassed,
*
from 
xyz 
where 
abc;

更具体地说,本节来自上面的代码:

datediff(hour, convert(datetime,Left(Replace(Create_Date, 'T', ' '), 19)), 
case 
when Resolution_date = 'None' then '1999-01-01 12:00:00'
when Resolution_date <> 'None' then convert(datetime, left(replace(Resolution_date, 'T', ' '), 19)) 
end) as HoursPassed

datetime列最初采用以下格式:

2017-05-25T15:58:26.000+0000

结果目前如下所示:

2017-05-23 19:51:59.000  2017-05-24 12:38:17.000        17
2017-05-24 15:10:50.000  2017-05-24 16:31:23.000         1
2017-05-25 15:58:26.000  2017-05-25 16:03:30.000         1

您可以将秒数转换为时间。 我不容易遵循您的代码逻辑,但转换非常简单:

select cast(dateadd(second,
datediff(second, <starttime>, <enddatime>),
0) as time
)

最新更新