转换DateTime时转换失败

时间:2011-11-22 14:40:05

标签: tsql casting

这是我的第一篇文章,所以任何错误都要提前道歉。

我正在尝试将字符串转换为日期格式。我的字符串格式为' 20110709_000000'。

我在研究后尝试了以下查询,但都返回了以下错误: '从字符串转换日期时间时转换失败。'

我试过了

Select CAST(REPLACE('20110709_000000','_', '') AS DATETIME)

SELECT CONVERT(DATETIME,REPLACE('20110709_000000','_', ''),109).

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:3)

假设000000hhmiss,您可以使用substring获取部分并构建格式为yyyymmdd hhmiss的字符串,您可以将其转换为datetime

declare @ds varchar(15) = '20110709_102030'

select cast(substring(@ds,  1, 8)+' '+
            substring(@ds, 10, 2)+':'+       
            substring(@ds, 12, 2)+':'+
            substring(@ds, 14, 2) as datetime)

结果:

-----------------------
2011-07-09 10:20:30.000

答案 1 :(得分:1)

你最后需要000000吗?这应该有效:

Select CAST(REPLACE('20110709_000000','_000000', '') AS DATETIME)