2011-09-23 14 views
10

In SQL Server come si formatta l'output getdate() in YYYYMMDDHHmmSS dove HH è in formato 24 ore?come formattare getdate in YYYYMMDDHHmmSS

Ho il YYYYMMDD fatto con

select CONVERT(varchar,GETDATE(),112) 

ma che è quanto ho ottenuto.

Grazie.

risposta

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

e quanto è brutto! :) –

+0

Grazie mille per la risposta. Mi ha aiutato molto :) –

6

vicino ma non esattamente quello che stai chiedendo:

select CONVERT(varchar, GETDATE(), 126) 

esempio

2011-09-23T12:18:24.837 

(AAAA-MM-ggThh: mi: SS.mmm (senza spazi), ISO8601 senza fuso orario)

Rif: CAST and CONVERT

Non c'è modo di specificare un formato personalizzato con CONVERT() . L'altra opzione è quella di eseguire la manipolazione delle stringhe per creare nel formato desiderato.

3

Prova questo:

selezionare Converti (varchar, GETDATE(), 120) esempio

2011-09-23 12:18:24 (aaaa-mm-gg hh: mi: ss (24h), canonico ODBC).

Hth.

17

Proprio per chiunque alla ricerca di questa funzionalità che ha SQL Server 2012 è possibile utilizzare la funzione di formattazione:

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

In questo modo eventuali stringhe di formato .NET che lo rende un nuovo un'utile aggiunta.

+2

+1 - molto utile. Ora puoi utilizzare tutti questi formati datetime.tostring dal framework .net. http://msdn.microsoft.com/en-us/library/zdtaw1bw(v=vs.110).aspx – TWood

+0

Grazie, ha funzionato per me! –

0

la conversione di datetime in questo modo richiede più di una chiamata da convertire. Il miglior utilizzo per questo è in una funzione che restituisce un varchar.

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

metterli insieme in questo modo all'interno della funzione

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

20131220 13:15:50

Come Thinhbk postato è possibile utilizzare select CONVERT(varchar,getdate(),20) o select CONVERT(varchar,getdate(),120) per arrivare abbastanza vicino a quello che si vuole.

1

Un'altra opzione!

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