Как форматировать getdate в YYYYMMDDHHmmSS

В SQL Server как форматировать getdate() вывод в YYYYMMDDHHmmSS, где HH - 24-часовой формат?

У меня есть YYYYMMDD с

select CONVERT(varchar,GETDATE(),112)

но это насколько я понял.

Спасибо.

Ответ 1

select replace(
       replace(
       replace(convert(varchar(19), getdate(), 126),
       '-',''),
       'T',''),
       ':','')

Ответ 2

Просто для тех, кто ищет эту функциональность, которая имеет SQL Server 2012, вы можете использовать функцию FORMAT:

SELECT FORMAT ( GETDATE(), 'yyyyMMddHHmmss') AS 'Custom DateTime'

Это позволяет любым строкам формата .NET сделать его полезным новым дополнением.

Ответ 3

Закройте, но не совсем то, что вы просите:

select CONVERT(varchar, GETDATE(), 126)

например.

2011-09-23T12:18:24.837

(yyyy-mm-ddThh: mi: ss.mmm(без пробелов), ISO8601 без временной зоны)

Ссылка: CAST и CONVERT

Нет способа указать пользовательский формат с помощью CONVERT(). Другой вариант - выполнить строковые манипуляции для создания в желаемом формате.

Ответ 4

Попробуйте следующее:

выберите CONVERT (varchar, GETDATE(), 120) например.

2011-09-23 12:18:24 (yyyy-mm-dd hh: mi: ss (24h), ODBC канонический).

Hth.

Ответ 5

Еще один вариант!

SELECT CONVERT(nvarchar(8), GETDATE(),112) + 
   CONVERT(nvarchar(2),DATEPART(HH,GETDATE())) + 
   CONVERT(nvarchar(2),DATEPART(MI,GETDATE())) + 
   CONVERT(nvarchar(2),DATEPART(SS,GETDATE()));

Ответ 6

Преобразование datetime таким образом требует более одного вызова для преобразования. Лучше всего использовать это в функции, которая возвращает varchar.

select CONVERT(varchar,GETDATE(),112) --YYYYMMDD
select CONVERT(varchar,GETDATE(),108) --HH:MM:SS

Соедините их так внутри функции

DECLARE @result as varchar(20)
set @result = CONVERT(varchar,GETDATE(),112) + ' ' + CONVERT(varchar,GETDATE(),108)
print @result

20131220 13:15:50

Как сообщил Thinhbk, вы можете использовать select CONVERT(varchar,getdate(),20) или select CONVERT(varchar,getdate(),120), чтобы приблизиться к тому, что вы хотите.

Ответ 7

select CONVERT(nvarchar(8),getdate(),112) + 
case when Len(CONVERT(nvarchar(2),DATEPART(HH,getdate()))) =1 then '0' + CONVERT(nvarchar(2),DATEPART(HH,getdate())) else CONVERT(nvarchar(2),DATEPART(HH,getdate())) end +
case when Len( CONVERT(nvarchar(2),DATEPART(MI,getdate())) ) =1 then '0' + CONVERT(nvarchar(2),DATEPART(MI,getdate())) else CONVERT(nvarchar(2),DATEPART(MI,getdate())) end