Sql 如何将VARCHAR datetime转换为datetime类型以填充表
我有一个带有VARCHAR列的表,其值的格式如下:Sql 如何将VARCHAR datetime转换为datetime类型以填充表,sql,sql-server,tsql,datetime,converter,Sql,Sql Server,Tsql,Datetime,Converter,我有一个带有VARCHAR列的表,其值的格式如下: 2012-10-05T11:14:00-04:00 我需要将此数据放入另一个表中,其中字段的数据类型为DATETIME 我该如何进行转换 2012-10-05T11:14:00-04:00 到 ? 我试过: CAST(LEFT(REPLACE(fieldtimestamp, 'T', ' '), 19) AS DATETIME) 但它总是给我一个错误: 从字符串转换日期和/或时间时,转换失败 这将有助于: 选择CONVERTDATETIM
2012-10-05T11:14:00-04:00
我需要将此数据放入另一个表中,其中字段的数据类型为DATETIME
我该如何进行转换
2012-10-05T11:14:00-04:00
到
?
我试过:
CAST(LEFT(REPLACE(fieldtimestamp, 'T', ' '), 19) AS DATETIME)
但它总是给我一个错误:
从字符串转换日期和/或时间时,转换失败
这将有助于:
选择CONVERTDATETIME,LEFTfieldtimestamp,19126
无需更换“T”
对我来说很有用
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中运行良好双引号中没有空格。那是我的错!谢谢@Rj。他们在你的查询中做了。在删除T时要非常小心。这实际上可能会破坏你的日期/时间值,具体取决于日期格式/语言设置。请参见+1删除T甚至是一个非常糟糕的主意,因为这会使转换依赖于设置的日期格式。@MikaelEriksson是的,我也这么认为。op没有明确提供格式,因此没有使用安全转换。但是,这是我对使用yyyy-mm-dd日期格式而不在convert中指定格式时可能发生的情况的看法。即使没有格式,使用T也是安全的,因此您的答案是双重安全的:。和设置语言-尝试设置语言法语和任意一天>12。更多信息:为什么每个人都想替换T?这是有原因的!
BEGIN
DECLARE @d DATETIMEOFFSET
SELECT @d = '2012-10-05 11:14:00-04:00'
END
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