我的表格中有一列Time
。它以分钟为单位保存时间值,即:605。我希望它以10 {05格式显示为hh:mm
格式。
我这样做:
...
Time = cast(AVG(Time) / 60 as varchar) + ':' + cast(AVG(Time) % 60 as varchar),
...
它显示的值为10:5,但是我想把它设为10:05,我找不到在分钟部分'5'之前添加'0'的方法。
任何帮助都将不胜感激。
答案 0 :(得分:2)
试试这个:
SELECT
TIME = CASE WHEN @t < 600 THEN '0' ELSE '' END +
CAST(Time / 60 as varchar(10)) + ':' +RIGHT(100 +(Time % 60), 2)
示例:
DECLARE @t int = 55121
SELECT
TIME = CASE WHEN @t < 600 THEN '0' ELSE '' END +
CAST(@t / 60 as varchar(10)) + ':' +RIGHT(100 +(@t % 60), 2)
结果:
Time
918:41
答案 1 :(得分:1)
你可以简单地添加一个Right(&#39; 0&#39; + ...,2)表达式,如下所示,以获得&#39; 0&#39;在那里。
Time = cast(AVG(Time) / 60 as varchar) + ':' + RIGHT('0'+cast(AVG(Time) % 60 as varchar),2)
要在评论中回答您的问题,请获取DD:HH:MM是一种类似的设置。
DayTime = cast(AVG(Time) / 1440 as varchar) + ':' + RIGHT('0' + cast((AVG(Time) / 60) % 24 as varchar),2) + ':' + RIGHT('0'+cast(AVG(Time) % 60 as varchar),2)
答案 2 :(得分:0)
您可以使用case
表达式执行此操作。
此外,您应始终在使用cast
时指定varchar的长度,否则它只会显示第一个字符。
case when len(cast(AVG(Time)%60 as varchar(2))) < 2 then '0'+cast(AVG(Time)%60 as varchar(2))
else cast(AVG(Time)%60 as varchar(2))
end