Jak wydrukować GETDATE () w SQL Server z milisekundami w czasie?


96

Chcę wydrukować GETDATE () w SQL Server 2008, potrzebuję czasu z milisekundami (służy to do debugowania - aby znaleźć czas wykonania sp)

Znajduję tę różnicę

  • SELECT GETDATE()zwraca 2011-03-15 18: 43: 44.100
  • print GETDATE()zwraca 15 marca 2011 6:44 PM

Myślę, że SQL Server automatycznie typecast w funkcji drukowania.

Muszę wydrukować datę w ten sposób 2011-03-15 18:43:44.100

Dzięki za pomoc.

Odpowiedzi:


114

Po pierwsze, prawdopodobnie powinieneś użyć, SYSDATETIME()jeśli szukasz większej precyzji.

Aby sformatować dane w milisekundach, spróbuj CONVERT(varchar, SYSDATETIME(), 121).

W przypadku innych formatów sprawdź stronę MSDN w CASTiCONVERT .


3
Drukuj CAST (GETDATE () as Datetime2 (7)) To też działa. Dziękujemy za odpowiedź.
Ramakrishnan

2
PRINT CAST (SYSDATETIME () AS NVARCHAR (200)) działa jak urok
Gabriel Espinoza

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

AKTUALIZACJA

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

33

Jeśli Twoja wersja SQL Server obsługuje funkcję FORMAT, możesz to zrobić w następujący sposób:

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

12

te 2 są takie same:

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

wprowadź opis obrazu tutaj


1

Spróbuj obserwować

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

1

Jest to odpowiednik new Date().getTime()w JavaScript:

Użyj poniższej instrukcji, aby uzyskać czas w sekundach.

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

Użyj poniższej instrukcji, aby uzyskać czas w milisekundach.

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

1

Utwórz funkcję o zwracanym formacie rrrr-mm-gg 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

Przykład

select fn_retornaFecha(getdate())

a wynik to: 2016-12-21 10: 12: 50.123

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.