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.

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 .


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))

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')

11

diese 2 sind gleich:

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

Geben Sie hier die Bildbeschreibung ein


1

Versuchen Sie Folgendes

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

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

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.