使用T-SQL将日期时间转换为“2013-02-04T10:30:23 + 00:00”

问题描述:

您好,我被转换为UTC DateTime字符串“2013-02-04T10:30:23 + 00 :00“转换为Sql 2005 datetime格式。 我试图 转换(日期时间, '2013-02-04T10:30:23 + 00:00',101页)。,但它给了我错误“的转换从字符串转换日期时间失败时使用T-SQL将日期时间转换为“2013-02-04T10:30:23 + 00:00”

然而,这并不工作转换(日期时间, '2013年2月4日10:30:23',101)。

是否有转换(日期时间任何变通,“2013-02-04T10:30:23 +00:00',101)?

提前致谢。

你可以做这样的:

DECLARE @s VARCHAR(100) = '2013-02-04T10:30:23+00:00' 
SELECT CONVERT(DATETIME, LEFT(@s, 10) + ' ' + SUBSTRING(@s, 12, 8), 101) 

这将提取的字符串需要的部分,它们连接成一个新的字符串,然后使用CONVERT得到DATETIME

+0

谢谢!但我一直在寻找一种不改变字符串的解决方案,因为它会消耗更多的资源,而我有数千条记录要处理。 – Mehboob 2013-02-14 12:40:16

+0

是的,如果你使用的是SQL Server 2008,你可以有'CAST(CONVERT(DATETIMEOFFSET,@s,207)AS DATETIME)',但是在SQL Server 2005中没有'DATETIMEOFFSET'数据类型。 – 2013-02-14 13:15:39

+0

如果存在性能问题,您可以创建上述建议定义的计算列,那么您还必须使用“PERSISTED”选项创建它。 – 2013-02-14 13:22:59

DECLARE @utc nvarchar(100) = '2013-02-04T10:30:23+00.00' 
SELECT CAST(STUFF(@utc, CHARINDEX('+', @utc), LEN(@utc),'') AS datetime)