Dans SQL Server, comment puis-je formater la sortie de getdate()
dans YYYYMMDDHHmmSS
où HH
est au format 24 heures?
J'ai terminé la YYYYMMDD
avec
select CONVERT(varchar,GETDATE(),112)
mais c'est aussi loin que je suis.
Merci.
select replace(
replace(
replace(convert(varchar(19), getdate(), 126),
'-',''),
'T',''),
':','')
Pour ceux qui recherchent cette fonctionnalité avec SQL Server 2012, vous pouvez utiliser la fonction FORMAT:
SELECT FORMAT ( GETDATE(), 'yyyyMMddHHmmss') AS 'Custom DateTime'
Cela autorise toutes les chaînes au format .NET, ce qui en fait un nouvel ajout utile.
Fermez mais pas exactement ce que vous demandez:
select CONVERT(varchar, GETDATE(), 126)
par exemple.
2011-09-23T12:18:24.837
(aaaa-mm-jjThh: mi: ss.mmm (sans espaces), ISO8601 sans fuseau horaire)
Ref: CAST and CONVERT
Il n'y a aucun moyen de spécifier un format personnalisé avec CONVERT()
. L'autre option consiste à effectuer une manipulation de chaîne afin de créer le format souhaité.
Essaye ça:
sélectionnez CONVERT (varchar, GETDATE (), 120) , par exemple.
2011-09-23 12:18:24 (Aaaa-mm-jj hh: mi: ss (24h), ODBC canonique).
Hth.
Une autre option!
SELECT CONVERT(nvarchar(8), GETDATE(),112) +
CONVERT(nvarchar(2),DATEPART(HH,GETDATE())) +
CONVERT(nvarchar(2),DATEPART(MI,GETDATE())) +
CONVERT(nvarchar(2),DATEPART(SS,GETDATE()));
la conversion de date/heure de cette façon nécessite la conversion de plusieurs appels. La meilleure utilisation pour cela est dans une fonction qui retourne un varchar.
select CONVERT(varchar,GETDATE(),112) --YYYYMMDD
select CONVERT(varchar,GETDATE(),108) --HH:MM:SS
Assemblez-les comme si à l'intérieur de la fonction
DECLARE @result as varchar(20)
set @result = CONVERT(varchar,GETDATE(),112) + ' ' + CONVERT(varchar,GETDATE(),108)
print @result
20131220 13:15:50
Comme Thinhbk a posté, vous pouvez utiliser select CONVERT(varchar,getdate(),20)
ou select CONVERT(varchar,getdate(),120)
pour vous rapprocher de ce que vous voulez.