web-dev-qa-db-fra.com

comment formater getdate en AAAAMMJJHHmmSS

Dans SQL Server, comment puis-je formater la sortie de getdate() dans YYYYMMDDHHmmSSHH 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.

12
Wayne
select replace(
       replace(
       replace(convert(varchar(19), getdate(), 126),
       '-',''),
       'T',''),
       ':','')
18
Mikael Eriksson

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.

23
Richard

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é.

6
Mitch Wheat

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.

3
Thinhbk

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()));
1
Han

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.

0
TWood