Как преобразовать значение 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)
Ответ 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)