将此“ 2020-10-19T12:19:04 + 0530”字符串转换为日期或日期时间

时间:2020-10-21 07:41:24

标签: sql-server

如何在SQL Server中将此"2020-10-19T12:19:04+0530"字符串转换为DateDateTime?我收到此错误:

从字符转换日期和/或时间时转换失败 字符串。

3 个答案:

答案 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)