>我有一个带有 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)
但它一直给我错误:
从字符串转换日期和/或时间时转换失败。
这将可以: SELECT CONVERT(DATETIME,LEFT(fieldtimestamp,19),126)
无需更换'T'
。
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 下
如果您使用的是 MS SQL Server 2008,则可以使用 DATETIMEOFFSET 而不是 DATETIME,它将起作用。
BEGIN
DECLARE @d DATETIMEOFFSET
SELECT @d = '2012-10-05 11:14:00-04:00'
END
选择日期, 投射( 左( 替换( 日期, '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 中工作正常