Come stampare GETDATE () in SQL Server con millisecondi nel tempo?


91

Voglio stampare GETDATE () in SQL Server 2008, ho bisogno del tempo con millisecondi (questo è a scopo di debug - per trovare il tempo di esecuzione di sp)

Trovo questa differenza

  • SELECT GETDATE()restituisce 2011-03-15 18: 43: 44.100
  • print GETDATE()restituisce il 15 marzo 2011 18:44

Penso che SQL Server sia automaticamente typecast nella funzionalità di stampa.

Devo stampare la data in questo modo 2011-03-15 18:43:44.100

Grazie per l'aiuto.

Risposte:


110

Innanzitutto, dovresti probabilmente usare SYSDATETIME()se stai cercando una maggiore precisione.

Per formattare i tuoi dati con millisecondi, prova CONVERT(varchar, SYSDATETIME(), 121).

Per altri formati, controlla la pagina MSDN su CASTeCONVERT .


3
Print CAST (GETDATE () as Datetime2 (7)) Anche questo funziona, grazie per la tua risposta.
Ramakrishnan

2
PRINT CAST (SYSDATETIME () AS NVARCHAR (200)) funziona a meraviglia
Gabriel Espinoza

53
SELECT CONVERT( VARCHAR(24), GETDATE(), 113)

AGGIORNARE

PRINT (CONVERT( VARCHAR(24), GETDATE(), 121))

29

Se la tua versione di SQL Server supporta la funzione FORMAT puoi farlo in questo modo:

select format(getdate(), 'yyyy-MM-dd HH:mm:ss.fff')

11

questi 2 sono gli stessi:

Print CAST(GETDATE() as Datetime2 (3) )
PRINT (CONVERT( VARCHAR(24), GETDATE(), 121))

inserisci qui la descrizione dell'immagine


1

Prova a seguire

DECLARE @formatted_datetime char(23)
SET @formatted_datetime = CONVERT(char(23), GETDATE(), 121)
print @formatted_datetime

1

Questo è equivalente a new Date().getTime() JavaScript:

Usa la seguente dichiarazione per ottenere il tempo in secondi.

SELECT  cast(DATEDIFF(s, '1970-01-01 00:00:00.000', '2016-12-09 16:22:17.897' ) as bigint)

Utilizzare l'istruzione seguente per ottenere il tempo in millisecondi.

SELECT  cast(DATEDIFF(s, '1970-01-01 00:00:00.000', '2016-12-09 16:22:17.897' ) as bigint)  * 1000

1

Crea una funzione con formato di ritorno aaaa-mm-hh hh: mi: ss.sss

create function fn_retornaFecha (@i_fecha datetime)
returns varchar(23)
as
begin
declare 
@w_fecha varchar(23),
@w_anio  varchar(4),
@w_mes   varchar(2),
@w_dia   varchar(2),
@w_hh    varchar(2),
@w_nn    varchar(2),
@w_ss    varchar(2),
@w_sss   varchar(3)

select @w_fecha = null

if ltrim(rtrim(@i_fecha)) is not null 
begin
   select
   @w_anio = replicate('0',4-char_length( convert(varchar(4), year(@i_fecha)) )) + convert(varchar(4), year(@i_fecha)),
   @w_mes  = replicate('0',2-char_length( convert(varchar(2),month(@i_fecha)) )) + convert(varchar(2),month(@i_fecha)),
   @w_dia  = replicate('0',2-char_length( convert(varchar(2),  day(@i_fecha)) )) + convert(varchar(2),  day(@i_fecha))  ,
   @w_hh   = replicate('0',2-char_length( convert(varchar(2),datepart( hh, @i_fecha ) ) )) + convert(varchar(2),datepart( hh, @i_fecha ) ),
   @w_nn   = replicate('0',2-char_length( convert(varchar(2),datepart( mi, @i_fecha ) ) )) + convert(varchar(2),datepart( mi, @i_fecha ) ),
   @w_ss   = replicate('0',2-char_length( convert(varchar(2),datepart( ss, @i_fecha ) ) )) + convert(varchar(2),datepart( ss, @i_fecha ) ),
   @w_sss  = convert(varchar(3),datepart( ms, @i_fecha ) ) + replicate('0',3-DATALENGTH( convert(varchar(3),datepart( ms, @i_fecha ) )  ))


   select @w_fecha = @w_anio + '-' + @w_mes + '-' + @w_dia + ' ' + @w_hh + ':' + @w_nn + ':' + @w_ss + '.' + @w_sss
end

return @w_fecha

end
go

Esempio

select fn_retornaFecha(getdate())

e il risultato è: 2016-12-21 10: 12: 50.123

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.