В SQL Server как форматировать getdate()
вывод в YYYYMMDDHHmmSS
, где HH
- 24-часовой формат?
У меня есть YYYYMMDD
с
select CONVERT(varchar,GETDATE(),112)
но это насколько я понял.
Спасибо.
В SQL Server как форматировать getdate()
вывод в YYYYMMDDHHmmSS
, где HH
- 24-часовой формат?
У меня есть YYYYMMDD
с
select CONVERT(varchar,GETDATE(),112)
но это насколько я понял.
Спасибо.
select replace(
replace(
replace(convert(varchar(19), getdate(), 126),
'-',''),
'T',''),
':','')
Просто для тех, кто ищет эту функциональность, которая имеет SQL Server 2012, вы можете использовать функцию FORMAT:
SELECT FORMAT ( GETDATE(), 'yyyyMMddHHmmss') AS 'Custom DateTime'
Это позволяет любым строкам формата .NET сделать его полезным новым дополнением.
Закройте, но не совсем то, что вы просите:
select CONVERT(varchar, GETDATE(), 126)
например.
2011-09-23T12:18:24.837
(yyyy-mm-ddThh: mi: ss.mmm(без пробелов), ISO8601 без временной зоны)
Ссылка: CAST и CONVERT
Нет способа указать пользовательский формат с помощью CONVERT()
. Другой вариант - выполнить строковые манипуляции для создания в желаемом формате.
Попробуйте следующее:
выберите CONVERT (varchar, GETDATE(), 120) например.
2011-09-23 12:18:24 (yyyy-mm-dd hh: mi: ss (24h), ODBC канонический).
Hth.
Еще один вариант!
SELECT CONVERT(nvarchar(8), GETDATE(),112) +
CONVERT(nvarchar(2),DATEPART(HH,GETDATE())) +
CONVERT(nvarchar(2),DATEPART(MI,GETDATE())) +
CONVERT(nvarchar(2),DATEPART(SS,GETDATE()));
Преобразование 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)
, чтобы приблизиться к тому, что вы хотите.
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