如何将VARCHAR datetime转换为DATETIME类型以填充表

时间:2013-01-30 18:44:22

标签: sql sql-server tsql datetime converter

我有一个带有VARCHAR()列的表,其中包含以下格式的值:

2012-10-05T11:14:00-04:00

我需要将此数据放入另一个表中,该字段的数据类型为DATETIME。

我将如何转换

2012-10-05T11:14:00-04:00

2012-10-05 11:14:00

我试过了:

CAST(LEFT(REPLACE(fieldtimestamp, 'T', ' '), 19) AS DATETIME)

但它一直给我错误:

  

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

4 个答案:

答案 0 :(得分:7)

这样做: SELECT CONVERT(DATETIME,LEFT(fieldtimestamp,19),126)

无需替换'T'

答案 1 :(得分:2)

select CAST(LEFT(REPLACE('2012-10-05T11:14:00-04:00', 'T', ' '), 19) AS DATETIME)

为我工作

2012-10-05 11:14:00.000

在sql server 2012下

答案 2 :(得分:0)

如果您使用的是MS SQL Server 2008,则可以使用DATETIMEOFFSET代替DATETIME,它可以正常工作。

BEGIN
DECLARE @d DATETIMEOFFSET
SELECT @d = '2012-10-05 11:14:00-04:00'
END

答案 3 :(得分:0)

  

SELECT thedate,CAST(LEFT(REPLACE(thedate,'T',''),21)AS DATETIME)   来自MyTbl1

如果您想要秒数,则需要21个字母,

thedate                     DATETIME
2012-10-05T11:14:00-04:00   2012-10-05 11:14:00
2012-10-05T11:14:00-05:00   2012-10-05 11:14:00

mysql

中工作正常