¿Cómo imprimir GETDATE () en SQL Server con milisegundos en el tiempo?

91

Quiero imprimir GETDATE () en SQL Server 2008, necesito el tiempo con milisegundos (esto es para fines de depuración, para encontrar el tiempo de ejecución de sp)

Encuentro esta diferencia

  • SELECT GETDATE()devuelve 2011-03-15 18: 43: 44.100
  • print GETDATE()devuelve el 15 de marzo de 2011 a las 6:44 p.m.

Creo que SQL Server encasilla automáticamente en la funcionalidad de impresión.

Necesito imprimir la fecha así 2011-03-15 18:43:44.100

Gracias por tu ayuda.

Ramakrishnan
fuente

Respuestas:

110

Primero, probablemente debería usarlo SYSDATETIME()si está buscando más precisión.

Para formatear sus datos con milisegundos, intente CONVERT(varchar, SYSDATETIME(), 121).

Para otros formatos, consulte la página de MSDN en CASTyCONVERT .

Adam Robinson
fuente
3
Imprimir CAST (GETDATE () como Datetime2 (7)) Esto también funciona, gracias por tu respuesta.
Ramakrishnan
2
PRINT CAST (SYSDATETIME () AS NVARCHAR (200)) funciona a las mil maravillas
Gabriel Espinoza
53
SELECT CONVERT( VARCHAR(24), GETDATE(), 113)

ACTUALIZAR

PRINT (CONVERT( VARCHAR(24), GETDATE(), 121))
Kris Ivanov
fuente
29

Si su versión de SQL Server admite la función FORMAT, puede hacerlo así:

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

estos 2 son los mismos:

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

ingrese la descripción de la imagen aquí

Marcello Miorelli
fuente
1

Intenta seguir

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

Esto es equivalente a new Date().getTime()en JavaScript:

Utilice la siguiente declaración para obtener el tiempo en segundos.

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

Utilice la siguiente declaración para obtener el tiempo en milisegundos.

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

Cree una función con formato de retorno 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

Ejemplo

select fn_retornaFecha(getdate())

y el resultado es: 2016-12-21 10: 12: 50.123

admincedep
fuente