这是我需要的T-SQL列格式 HH:MM:SS
示例:
SELECT CONVERT(varchar,GETDATE(),108)
- 11:06:03
我有以下值:(从MyTable中选择持续时间)
2时13分00秒
11:02
0:43
这需要是这样的:
2时十三分00秒
0点11分02秒
0点00分43秒
如何在T-SQL中完成?
答案 0 :(得分:2)
Use Convert,然后施放 转型。这里的特性隐藏在省略的小时字符串中,而sql server假设秒省略。
Select
CONVERT(time(0),
case when len(duration) > 5 then duration else '00:' + duration end, 108)
from MyTable
示例:
SELECT CONVERT(time(0),
case when len('2:13:00') > 5 then '2:13:00' else '00:' + '2:13:00' end ,108)
SELECT CONVERT(time(0),
case when len('11:02') > 5 then '11:02' else '00:' + '11:02' end ,108)
SELECT CONVERT(time(0),
case when len('0:43') > 5 then '0:43' else '00:' + '0:43' end ,108)
--------------
02:13:00
00:11:02
00:00:43
Update1:优化了@Mikael Eriksson提示的时间(0)答案
Update2:关于example2要求的修改后的解决方案
答案 1 :(得分:1)
这最终为我做到了......
SELECT RIGHT('000' + CASE WHEN LEN(Duration) > 5
THEN LEFT(duration, CHARINDEX(':', duration) - 1)
ELSE 0 -- Hours
END, 3) + ':' +
RIGHT('00' + CASE WHEN LEN(Duration) > 5
THEN SUBSTRING(duration
,CHARINDEX(':',duration) + 1
,CHARINDEX(':',duration
,CHARINDEX(':',duration) + 1) - 1- CHARINDEX(':',duration))
ELSE LEFT(duration,CHARINDEX(':',duration) - 1)END, 2) + ':' + -- Minutes
RIGHT('00'+ RIGHT(duration, 2), 2) -- Seconds
NewDuration
FROM MyTable