我的SQL数据库中有一个包含时间戳的varchar(255)列。我需要将其转换为日期时间格式。但是我不确定哪个演员/转换是合适的。
格式如下:
DDD, DD MMM YYYY HH:MM:SS
数据示例:
Tue, 9 Sep 2014 07:24:25 +0000
Mon, 30 Jun 2014 20:18:19 -0530
可以忽略第二个(SS)数字后的时区指示符。
期望的结果:YYYY-MM-DD HH:MM:SS
答案 0 :(得分:0)
使用子字符串提取不同的部分,因为一个或两个数字天而需要一个额外的字符。
例如。年份:trim(substring(col from 12 for 5))
对其余项目做类似的事情。 月份需要额外的工作才能从月份名称中获取月份数
case trim(substring(col from 8 for 4))
when 'Jan' then '01'
when 'Feb' then '02'
...
when 'Dec' then '12'
end
Concat你的不同部分,不要忘记分隔破折号等。
答案 1 :(得分:0)
如果您的格式总是看起来像您可以使用以下
Select convert(datetime, SUBSTRING(DateColumn, CharIndex(',', DateColumn) + 1, LEN(DateColumn) - (CharIndex(',', DateColumn) + 1 + CHARINDEX(':', REVERSE(DateColumn)) - 4))))
以下是我的例子:
Declare @val varchar(40) = 'Tue, 9 Sep 2014 07:24:25 +0000'
Declare @val1 varchar(40) = 'Mon, 30 Jun 2014 20:18:19 -0530 (PST)'
Select convert(datetime, substring(@val, CharIndex(',', @val) + 1, Len(@val) - (CharIndex(',', @val) + 1 + CHARINDEX(':', REVERSE(@Val)) - 4)))
Select convert(datetime, substring(@val1, CharIndex(',', @val1) + 1, Len(@val1) - (CharIndex(',', @val) + 1 + CHARINDEX(':', REVERSE(@Val1)) - 4)))