Как преобразовать значение datetime в yyyymmddhhmmss на SQL-сервере?

Как преобразовать значение datetime в yyyymmddhhmmss?

например  Из 2014-04-17 13:55:12

To 20140417135512

Ответ 1

Начиная с версии SQL Server 2012 вы можете использовать:

SELECT format(getdate(),'yyyyMMddHHmmssffff')

Ответ 2

Это работает:

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

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

Результат:

20140417135512

Ответ 3

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

Ответ 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), ':', '')

Ответ 5

Другая опция, с которой я столкнулся Google, но содержит несколько замен...

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

Ответ 6

Этот запрос состоит в преобразовании DateTimeOffset в формат yyyyMMddhhss со смещением. Я заменил дефисы colon(:), period(.) на данные и сохранил дефис для разделения Offset из DateTime.

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)))

Ответ 7

и это тоже работает

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

Ответ 8

20090320093349

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