2013-01-12 155 views
2

以前我曾尝试过类似问题的可用链接,但它不起作用。所以我在这里张贴我的案例。将varchar转换为时间

我有时间格式:

09:47:11:895799 

这被存储为varchar(50)在我的Microsoft SQL Server数据库。

我想将它转换为时间格式,就像这个link一样。

hh:mm:ss[.nnnnnnn] 

你能帮忙吗?

+0

什么版本的sql server? – Taryn

+2

“它不起作用” - 以什么方式?错误消息?结果为空或意外?还有别的吗? –

+0

在投射到“时间”之前,您需要将最后一个':'更改为'.'。 –

回答

12

该字符串的格式不正确。它应该是09:47:11.895799。你需要用.

SELECT CAST(STUFF('09:47:11:895799', 9,1,'.') AS TIME) 
+0

是的,':'是问题所在。谢谢! – Zanam

+2

@ user1949158记住要接受这个答案,如果它满足您的需求。欢迎来到Stack Overflow! – BellevueBob

3

更换最终:您也可以让你的字符串作为hh:mi:ss:mmm(24小时格式),然后convert随着时间。这意味着从您的毫秒中删除最后3位数字而无需更换最后的':''.'

这里是MSDN link关于格式化的更多细节。这里是工作示例SQL Fiddle

DECLARE @s varchar(50) = '09:47:11:895799' 
SELECT Convert(time, Left(@s,Len(@s)-3), 114)