0

我收到以下格式的日期时间:

Thu, 18 Mar 2021 10:37:31 +0000

如果我在 RFC2822 中更正了这一点。

我想不出将其转换为 SQl 服务器将使用的“正常”日期时间的方法。例如,我希望它是:

2021-03-18 10:37:31
YYYY-MM-DD hh:mi:ss

我尝试过 CONVERT() 之类的方法,并通过以下方式找到了一种粗略的方法:

DECLARE @WeirdDate varchar(50) = 'Thu, 30 Jul 2015 20:00:00 +0000'
SELECT
CONVERT(DATETIME, SUBSTRING(@WeirdDate, CHARINDEX(',', @WeirdDate) + 1, 20))

但没有一个工作得那么好。有没有办法以“正确”的方式转换它?

编辑:

澄清:格式始终与提供的示例相同。包括日期名称。

不确定它是否总是相同的时区。我可能会从不同的时区收到它。这是需要考虑的事情。

4

1 回答 1

0

似乎可以通过“小”字符串操作和一些样式代码来实现这一点:

DECLARE @YourDate varchar(50) = 'Thu, 30 Jul 2015 20:00:00 +0000'
SELECT TRY_CONVERT(datetimeoffset(0),CONVERT(varchar(25),TRY_CONVERT(datetime2(0),STUFF(STUFF(@YourDate,1,5,''),21,6,''),106),126) + STUFF(RIGHT(@YourDate,5),4,0,':'));

但是,如果您使用LOGIN的语言设置不是基于英语的设置,这将失败。

如果该值始终为 UTC,您实际上可以只使用“中间”TRY_CONVERT表达式。

于 2021-03-18T11:20:15.587 回答