0

我有一个带有 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

4 回答 4

7

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

无需更换'T'.

于 2013-01-30T18:48:58.150 回答
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下

于 2013-01-30T18:50:07.560 回答
0

如果您使用的是 MS SQL Server 2008,则可以使用 DATETIMEOFFSET 而不是 DATETIME,它会起作用。

BEGIN
DECLARE @d DATETIMEOFFSET
SELECT @d = '2012-10-05 11:14:00-04:00'
END
于 2013-01-30T18:59:24.490 回答
0

选择日期,CAST(左(替换(日期,'T',''),21)作为日期时间)来自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中工作正常

于 2013-01-30T19:46:43.620 回答