SQL-将varchar(8)转换为时间格式

时间:2015-11-05 18:15:29

标签: sql sql-server sql-server-2008-r2 type-conversion time-format

时间保存为varchar(8)格式,如:09241324,我想将其转换为时间格式。我可以摆脱最后的nn,以便hh:mm:ss可行。我尝试使用强制转换/转换,但它抛出错误:

  

从字符转换日期和/或时间时转换失败   字符串。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

这会有用吗?

convert(time, stuff(stuff(stuff(dt, 3, 0, ':'), 6, 0, ':'), 9, 0, '.'))

cast通常比convert更受欢迎,但我不知道您是否需要指定格式代码。

没有毫秒是类似的:

convert(time, stuff(stuff(stuff(dt, 3, 0, ':'), 6, 0, ':'), 9, 2, '.00'))

答案 1 :(得分:1)

插入时间格式化片段(冒号:和小数。)和CAST作为TIME:

DECLARE @string VARCHAR(10)
SET @string = '09241324'
SELECT CAST(
    SUBSTRING(@string,1,2) + ':' +
    SUBSTRING(@string,3,2) + ':' +
    SUBSTRING(@string,5,2) + '.' +
    SUBSTRING(@string,7,2) AS TIME)