Как преобразовать значение datetime
в yyyymmddhhmmss
?
например
Из 2014-04-17 13:55:12
To 20140417135512
Как преобразовать значение datetime
в yyyymmddhhmmss
?
например
Из 2014-04-17 13:55:12
To 20140417135512
Начиная с версии SQL Server 2012 вы можете использовать:
SELECT format(getdate(),'yyyyMMddHHmmssffff')
Это работает:
declare @d datetime
set @d = '2014-04-17 13:55:12'
select replace(convert(varchar(8), @d, 112)+convert(varchar(8), @d, 114), ':','')
Результат:
20140417135512
SELECT REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19), CONVERT(DATETIME, getdate(), 112), 126), '-', ''), 'T', ''), ':', '')
FORMAT()
медленнее, чем CONVERT()
. Этот ответ немного лучше, чем ответ @jpx, потому что он выполняет замену только во временной части даты.
112 = yyyymmdd - no format change needed
108 = hh:mm:ss - remove :
SELECT CONVERT(VARCHAR, GETDATE(), 112) +
REPLACE(CONVERT(VARCHAR, GETDATE(), 108), ':', '')
Другая опция, с которой я столкнулся Google, но содержит несколько замен...
SELECT REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19), CONVERT(DATETIME, getdate(), 112), 126), '-', ''), 'T', ''), ':', '')
Этот запрос состоит в преобразовании 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)))
и это тоже работает
SELECT replace(replace(replace(convert(varchar, getdate(), 120),':',''),'-',''),' ','')
20090320093349
SELECT CONVERT(VARCHAR,@date,112) +
LEFT(REPLACE(CONVERT(VARCHAR,@date,114),':',''),6)