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.

Ramakrishnan
la source

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 .

Adam Robinson
la source
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))
Kris Ivanov
la source
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')
Stefan Michev
la source
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

Marcello Miorelli
la source
1

Essayez de suivre

DECLARE @formatted_datetime char(23)
SET @formatted_datetime = CONVERT(char(23), GETDATE(), 121)
print @formatted_datetime
Lav
la source
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
S Kotra
la source
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

admincedep
la source