转换此日期时间字符串

时间:2016-05-15 05:20:28

标签: sql sql-server sql-server-2008 sql-server-2008-r2

是否可以转换此日期时间字符串

'20150819130706'

这样的事情

'2015-08-19 13:07:06'

2 个答案:

答案 0 :(得分:1)

这是一个选项:

DECLARE @DatetimeString char(14) = '20150819130706'

SELECT  LEFT(@DatetimeString, 4) + '-' + 
        SUBSTRING(@DatetimeString, 5, 2) + '-' + 
        SUBSTRING(@DatetimeString, 7, 2) + ' ' +
        SUBSTRING(@DatetimeString, 9, 2) +':' + 
        SUBSTRING(@DatetimeString, 11, 2) +':' + 
        RIGHT(@DatetimeString, 2)

如果你想要一个实际的日期时间值,你可以简单地将整个事物投射到日期时间:

SELECT  CAST(   LEFT(@DatetimeString, 4) + '-' + 
                SUBSTRING(@DatetimeString, 5, 2) + '-' + 
                SUBSTRING(@DatetimeString, 7, 2) + 'T' +
                SUBSTRING(@DatetimeString, 9, 2) +':' + 
                SUBSTRING(@DatetimeString, 11, 2) +':' + 
                RIGHT(@DatetimeString, 2) As datetime)

注意:要转换为日期时间,您需要将' '更改为'T',请参阅Lad2025的comment此答案。

答案 1 :(得分:0)

Select Convert(varchar(19),
cast(Substring('20150819130706', 1,8)
+ ' ' + Substring('20150819130706',9,2)
+ ':' + Substring('20150819130706',11,2) 
+ ':' + Substring('20150819130706',13,2) as datetime),121);

使用此查询。