运行下面的查询,得到输出"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