как отформатировать getdate в ГГГГММДДЧЧммСС - PullRequest
13 голосов
/ 23 сентября 2011

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

Я получил YYYYMMDD с

select CONVERT(varchar,GETDATE(),112)

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

Спасибо.

Ответы [ 6 ]

24 голосов
/ 22 октября 2013

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

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

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

20 голосов
/ 23 сентября 2011
select replace(
       replace(
       replace(convert(varchar(19), getdate(), 126),
       '-',''),
       'T',''),
       ':','')
6 голосов
/ 23 сентября 2011

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

select CONVERT(varchar, GETDATE(), 126)

, например

2011-09-23T12:18:24.837

(гггг-мм-ддчч: ми: сс.ммм (без пробелов), ISO8601 без часового пояса)

Ссылка: CAST и CONVERT

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

3 голосов
/ 23 сентября 2011

Попробуйте это:

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

2011-09-23 12:18:24 (гггг-мм-дд чч: ми: сс (24 ч), ODBC канонический).

Hth.

1 голос
/ 22 апреля 2014

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

SELECT CONVERT(nvarchar(8), GETDATE(),112) + 
   CONVERT(nvarchar(2),DATEPART(HH,GETDATE())) + 
   CONVERT(nvarchar(2),DATEPART(MI,GETDATE())) + 
   CONVERT(nvarchar(2),DATEPART(SS,GETDATE()));
0 голосов
/ 20 декабря 2013

преобразование даты и времени таким образом требует более одного вызова для преобразования. Лучшее использование для этого в функции, которая возвращает 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), чтобы получить достаточно близко к тому, что вы хотите.

...