【发布时间】:2017-10-25 06:57:06
【问题描述】:
我想将 20170426140000 转换为 2017-04-26 14:00:00
【问题讨论】:
-
从字符串到日期时间的转换函数在各种 DBMS 中是不同的。你用的是哪个?然后,您是从用户或列中获取字符串还是从查询中获取文字?
标签: sql sql-server tsql
我想将 20170426140000 转换为 2017-04-26 14:00:00
【问题讨论】:
标签: sql sql-server tsql
您可以在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
【讨论】:
在 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
输出:
【讨论】:
你可以像下面的语句那样转换它。
SELECT FORMAT(20170426140000,'0000-00-00 00:00:00')
【讨论】:
以下应该可以工作(SQL-Server 2012+):
DECLARE @strDateTime varchar(14) = '20170426140000'
SELECT CONVERT(datetime,
FORMAT(CONVERT(bigint, @strDateTime),
'####-##-## ##:##:##'),
120)
如果你只想输出字符串而不转换为日期时间:
DECLARE @strDateTime varchar(14) = '20170426140000'
SELECT FORMAT(CONVERT(bigint, @strDateTime),
'####-##-## ##:##:##')
【讨论】: