SQL 服务器中的可用日期时间的 RFC2822 日期时间格式

RFC2822 datetime format to a usable datetime in SQL server

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

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

如果 RFC2822 是我更正的话。

我想不出一种方法来将其转换为 'normal' 服务器将使用的 'normal' 日期时间。 例如我希望它是:

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

但是 none 它的效果很好。 有没有办法以 'proper' 的方式转换它?

编辑:

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

确定它永远是同一个时区。我可能会从不同的时区收到它。这是需要考虑的事情。

可以通过“小”字符串操作和一些样式代码来实现此目的:

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 表达式。