¿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.

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 .


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

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

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í


1

Intenta seguir

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

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

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.