如何在SQL Server中将此"2020-10-19T12:19:04+0530"
字符串转换为Date
或DateTime
?我收到此错误:
从字符转换日期和/或时间时转换失败 字符串。
答案 0 :(得分:0)
您可以尝试使用supported字符串文字格式之一将输入字符串转换为datetimeoffset
数据类型,以用于datetimeoffset(例如YYYY-MM-DDThh:mm:ss+hh:mm
)。但是,在特定情况下,您需要在输入文本的dateimeoffset部分中添加:
:
DECLARE @datetime varchar(25) = '2020-10-19T12:19:04+0530'
SELECT CONVERT(
datetimeoffset(0),
LEFT(@datetime, LEN(@datetime) - 2) + ':' + RIGHT(@datetime, 2)
)
请注意,使用datetimeoffset
数据类型可能是一个更好的选择,因为输入字符串文字包含有关时区的信息。之后,您可以将此值convert设置为其他日期和时间数据类型。
DECLARE @datetime varchar(25) = '2020-10-19T12:19:04+0530'
SELECT CONVERT(
datetime,
CONVERT(
datetimeoffset(0),
LEFT(@datetime, LEN(@datetime) - 2) + ':' + RIGHT(@datetime, 2)
)
)
当然,您只能获得输入字符串的datetime部分并将其转换为datetime
数据类型:
DECLARE @datetime varchar(25) = '2020-10-19T12:19:04+0530'
SELECT CONVERT(
datetime,
LEFT(@datetime, 19)
)
答案 1 :(得分:0)
DECLARE @StringDate VARCHAR(40) = '2020-10-19T12:19:04+0530'
SELECT CONVERT(DATETIME2,STUFF(@StringDate,23,0,':')) -- RESULT 2020-10-19 12:19:04.0000000
SELECT CONVERT(varchar, CONVERT(DATETIME2,STUFF(@StringDate,23,0,':')), 101) --RESULT 10/19/2020
立即尝试您想要的内容。
以下站点可帮助您格式化日期。 https://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/
答案 2 :(得分:0)
在这里,我的评论作为答案,因为它解决了您的问题:
如果您无法更改输入,则可以尝试将列添加到日期字符串中:
SELECT CAST(CAST(LEFT(@x,LEN(@x)-2) + ':' + RIGHT(@x, 2) AS datetimeoffset) AS DATETIME)