如何显示Datediff hh:ss格式



运行下面的查询,得到输出"16:6"one_answers"3:40"。第二个显示零,但第一个显示"16:6"

第一个让它看起来像"16:60",到那时可能是错误的。

我怎样才能让它显示"16:06"而不把其他事情搞砸?

SELECT
    right('0' + convert(float,datediff (second, '2015-02-09 10:58:42.202','2015-02-09 11:14:48.245')/ 60 ), 2) + ':' +
right('0' + convert(float,datediff (second, '2015-02-09 10:58:42.202','2015-02-09 11:14:48.245')% 60),2)  as total_time
SELECT
    right('0' + convert(float,datediff (second, '2015-02-09 08:07:35.284','2015-02-09 08:11:15.863')/ 60 ), 2) + ':' +
right('0' + convert(float,datediff (second, '2015-02-09 08:07:35.284','2015-02-09 08:11:15.863')% 60),2)  as total_time

使用VARCHAR()而不是FLOAT:

SELECT
    right('0' + convert(VARCHAR(4),datediff (second, '2015-02-09 10:58:42.202','2015-02-09 11:14:48.245')/ 60 ), 2) + ':' 
   +right('0' + convert(VARCHAR(4),datediff (second, '2015-02-09 10:58:42.202','2015-02-09 11:14:48.245')% 60),2)  as total_time

RIGHT('0'+ ... ),2)部分的要点是将前导零添加到1位数,但它只适用于字符串。

如果你想在分钟部分显示2位以上的数字,你必须改变添加前导零的方式。

假设这是T-SQL,有一个datediff:

SELECT
right(convert(varchar, dateadd(second, datediff(second, '2015-02-09 10:58:42.202','2015-02-09 11:14:48.245'), 0), 108), 5) as total_time

最新更新