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
表达式。
我收到以下格式的日期时间:
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
表达式。