我有一个带有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)
但它一直给我错误:
从字符串转换日期和/或时间时转换失败。
答案 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
中工作正常