Wie drucke ich GETDATE () in SQL Server mit Millisekunden Zeit?

90

Ich möchte GETDATE () drucken in SQL Server 2008 Ich benötige die Zeit in Millisekunden (dies dient dem Debugging, um die Ausführungszeit von sp zu ermitteln.)

Ich finde diesen Unterschied

  • SELECT GETDATE()gibt 2011-03-15 18: 43: 44.100 zurück
  • print GETDATE()kehrt zurück 15. März 2011 18:44 Uhr

Ich denke, SQL Server wird automatisch in Druckfunktionen typisiert.

Ich muss das Datum so ausdrucken 2011-03-15 18:43:44.100

Danke für Ihre Hilfe.

Ramakrishnan
quelle

Antworten:

110

Erstens sollten Sie wahrscheinlich verwenden, SYSDATETIME()wenn Sie nach mehr Präzision suchen.

Versuchen Sie, Ihre Daten in Millisekunden zu formatieren CONVERT(varchar, SYSDATETIME(), 121).

Weitere Formate finden Sie auf der MSDN-Seite unter CASTundCONVERT .

Adam Robinson
quelle
3
CAST drucken (GETDATE () als Datetime2 (7)) Dies funktioniert auch. Vielen Dank für Ihre Antwort.
Ramakrishnan
2
PRINT CAST (SYSDATETIME () AS NVARCHAR (200)) wirkt wie ein Zauber
Gabriel Espinoza
53
SELECT CONVERT( VARCHAR(24), GETDATE(), 113)

AKTUALISIEREN

PRINT (CONVERT( VARCHAR(24), GETDATE(), 121))
Kris Ivanov
quelle
27

Wenn Ihre SQL Server-Version die Funktion FORMAT unterstützt, können Sie dies folgendermaßen tun:

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

diese 2 sind gleich:

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

Geben Sie hier die Bildbeschreibung ein

Marcello Miorelli
quelle
1

Versuchen Sie Folgendes

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

Dies entspricht new Date().getTime()in JavaScript:

Verwenden Sie die folgende Anweisung, um die Zeit in Sekunden abzurufen.

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

Verwenden Sie die folgende Anweisung, um die Zeit in Millisekunden abzurufen.

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

Erstellen Sie eine Funktion mit dem Rückgabeformat yyyy-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

Beispiel

select fn_retornaFecha(getdate())

und das Ergebnis ist: 2016-12-21 10: 12: 50.123

admincedep
quelle