您的位置:首页 > 数据库

在SQL Server中返回指定格式的两个时间的时间差

2011-03-28 12:08 302 查看
源于博问中的一个提问


我的数据库A,想返回两个时间的时间差,两个时间的格式如下:
a b
11:00:00 12:20:11
然后我想返回的格式是
c
1:20:11

我用datediff,但出不了我的结果,格式都不是那样的,请问该怎么写?


我的回答:

SELECT CAST(DATEDIFF(HH,'11:00:00','12:20:11') AS VARCHAR)
+ ':' +
CAST((DATEDIFF(MI,'11:00:00','12:20:11')%60) AS VARCHAR)
+ ':' +
CAST((DATEDIFF(SS,'11:00:00','12:20:11')%60) AS VARCHAR)


如果返回格式要求是01:20:11,则代码如下:

SELECT RIGHT('0' + CAST(DATEDIFF(HH,'11:00:00','12:20:11') AS VARCHAR),2)
+ ':' +
RIGHT('0' + CAST((DATEDIFF(MI,'11:00:00','12:20:11')%60) AS VARCHAR),2)
+ ':' +
RIGHT('0' + CAST((DATEDIFF(SS,'11:00:00','12:20:11')%60) AS VARCHAR),2)


答案参考自:how to display hh:mm format using DateDiff() function

感谢沐枫提供的更简单的解决方案:

select convert(varchar, convert(datetime, datediff(SS, '11:00:00', '12:20:11')/convert(decimal,86400)), 8)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: