Comment imprimer GETDATE () dans SQL Server avec des millisecondes dans le temps?


91

Je veux imprimer GETDATE () dans SQL Server 2008, j'ai besoin du temps en millisecondes (c'est à des fins de débogage - pour trouver le temps d'exécution de sp)

Je trouve cette différence

  • SELECT GETDATE()renvoie 15/03/2011 18: 43: 44.100
  • print GETDATE()renvoie 15 mars 2011 18:44

Je pense que SQL Server est automatiquement typé dans la fonctionnalité d'impression.

J'ai besoin d'imprimer la date comme ça 2011-03-15 18:43:44.100

Merci de votre aide.

Réponses:


110

Tout d'abord, vous devriez probablement l'utiliser SYSDATETIME()si vous recherchez plus de précision.

Pour formater vos données en millisecondes, essayez CONVERT(varchar, SYSDATETIME(), 121).

Pour les autres formats, consultez la page MSDN sur CASTetCONVERT .


3
Imprimer CAST (GETDATE () as Datetime2 (7)) Cela fonctionne aussi, merci pour votre réponse.
Ramakrishnan

2
PRINT CAST (SYSDATETIME () AS NVARCHAR (200)) fonctionne comme un charme
Gabriel Espinoza

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

METTRE À JOUR

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

29

Si votre version de SQL Server prend en charge la fonction FORMAT, vous pouvez le faire comme ceci:

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

11

ces 2 sont les mêmes:

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

entrez la description de l'image ici


1

Essayez de suivre

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

1

Cela équivaut à new Date().getTime() en JavaScript:

Utilisez l'instruction ci-dessous pour obtenir l'heure en secondes.

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

Utilisez l'instruction ci-dessous pour obtenir l'heure en millisecondes.

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

1

Créez une fonction avec le format de retour 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

Exemple

select fn_retornaFecha(getdate())

et le résultat est: 2016-12-21 10: 12: 50.123

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.