如何在SQL Server中将datetime值转换为yyyymmddhhmmss?

时间:2014-04-17 13:00:20

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

如何将datetime值转换为yyyymmddhhmmss

例如,

 来自2014-04-17 13:55:12

20140417135512

8 个答案:

答案 0 :(得分:30)

从SQL Server Version 2012开始,您可以使用:

SELECT format(getdate(),'yyyyMMddHHmmssffff')

答案 1 :(得分:16)

这似乎有效:

declare @d datetime
set @d = '2014-04-17 13:55:12'

select replace(convert(varchar(8), @d, 112)+convert(varchar(8), @d, 114), ':','') 

结果:

20140417135512

答案 2 :(得分:8)

SELECT REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19), CONVERT(DATETIME, getdate(), 112), 126), '-', ''), 'T', ''), ':', '') 

答案 3 :(得分:4)

FORMAT()CONVERT()慢。这个答案比@jpx的答案稍好,因为它只替换日期的时间部分。

112 = yyyymmdd - no format change needed

108 = hh:mm:ss - remove :

SELECT CONVERT(VARCHAR, GETDATE(), 112) + 
       REPLACE(CONVERT(VARCHAR, GETDATE(), 108), ':', '')

答案 4 :(得分:0)

我用google搜索的另一个选项,但包含几个替换...

SELECT REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19), CONVERT(DATETIME, getdate(), 112), 126), '-', ''), 'T', ''), ':', '') 

答案 5 :(得分:0)

此查询是使用Offset将DateTimeOffset转换为格式yyyyMMddhhss。我已经从数据中替换了连字符colon(:), period(.),并保留了从DateTime开始分隔Offset的连字符。

SELECT REPLACE(SUBSTRING(CONVERT(VARCHAR(33),SYSDATETIMEOFFSET(),126), 1, 8), '-', '') +
SUBSTRING(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(33), SYSDATETIMEOFFSET(), 126),'T',''),'.',''),':',''),9,DATALENGTH(CONVERT(VARCHAR(33), SYSDATETIMEOFFSET(), 126)))

答案 6 :(得分:0)

这也可行

SELECT replace(replace(replace(convert(varchar, getdate(), 120),':',''),'-',''),' ','')

答案 7 :(得分:0)

20090320093349

SELECT CONVERT(VARCHAR,@date,112) + 
LEFT(REPLACE(CONVERT(VARCHAR,@date,114),':',''),6)