web-dev-qa-db-fra.com

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

Je souhaite imprimer GETDATE() dans SQL Server 2008, il me faut du temps, en millisecondes (cela sert au débogage - pour trouver le temps d'exécution de sp)

Je trouve cette différence 

  • SELECT GETDATE() renvoie 2011-03-15 18: 43: 44.100  
  • print GETDATE() renvoie 15 mars 2011 18h44

Je pense que SQL Server transcrit automatiquement les fonctionnalités d'impression.

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

Merci de votre aide.

75
Ramakrishnan

Tout d'abord, vous devriez probablement 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 CAST et CONVERT .

91
Adam Robinson
SELECT CONVERT( VARCHAR(24), GETDATE(), 113)

METTRE À JOUR

PRINT (CONVERT( VARCHAR(24), GETDATE(), 121))
48
Kris Ivanov

Si votre version de SQL Server prend en charge la fonction FORMAT, procédez comme suit:

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

ces 2 sont les mêmes:

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

 enter image description here

6
marcello miorelli

Essayez de suivre

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

Créer 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

1
admincedep

Ceci est équivalent à new Date().getTime() en JavaScript: 

Utilisez l'instruction ci-dessous pour obtenir le temps 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
0
S Kotra