如何将varchar转换为datetime conver

时间:2017-10-25 06:57:07

标签: sql sql-server tsql

我想将20170426140000转换为2017-04-26 14:00:00

4 个答案:

答案 0 :(得分:1)

您可以通过Substring&的帮助获得上述结果Stuff功能如下: -

DECLARE @DATA VARCHAR(MAX);

SET @DATA = '20170426140000';

SELECT CONVERT(DATETIME, SUBSTRING(@DATA, 1, 4)+'-'+SUBSTRING(@DATA, 5, 2)+'-'+SUBSTRING(@DATA, 7, 2)+' '+STUFF(STUFF(SUBSTRING(@DATA, 9, LEN(@data)), 3, 0, ':'), 6, 0, ':'));

结果:

2017-04-26 14:00:00.000

注意:以上内容适用于SQL Server

答案 1 :(得分:0)

在SQL Server中

DECLARE @InputText varchar(15)='20170426140000',@DateValue varchar(8),@FormattedDate varchar(50)
       SET @DateValue=LEFT(@InputText,8)
SELECT @FormattedDate =
convert(varchar(10), convert(datetime, @DateValue), 21)
+ ' ' + substring(@InputText, 9, 2)
+ ':' + substring(@InputText, 11, 2)
+ ':' + substring(@InputText, 13, 2)
SELECT @InputText AS Input,@FormattedDate AS FormattedDate

输出:

enter image description here

答案 2 :(得分:0)

以下内容应该有效(SQL-Server 2012 +):

DECLARE @strDateTime varchar(14) = '20170426140000'

SELECT CONVERT(datetime,
               FORMAT(CONVERT(bigint, @strDateTime),
                      '####-##-## ##:##:##'),
               120)

如果您只想输出字符串而不转换为datetime:

DECLARE @strDateTime varchar(14) = '20170426140000'

SELECT FORMAT(CONVERT(bigint, @strDateTime),
              '####-##-## ##:##:##')

SQL Fiddle

答案 3 :(得分:0)

您可以将其转换为以下声明。

SELECT FORMAT(20170426140000,'0000-00-00 00:00:00')