GETDATE () SQL Server'da milisaniyelerle nasıl yazdırılır?


96

SQL Server 2008'de GETDATE () yazdırmak istiyorum , milisaniye ile zamana ihtiyacım var (bu hata ayıklama amacıyla - sp'nin yürütme zamanını bulmak için)

Bu farkı buluyorum

  • SELECT GETDATE()döndürür 2011-03-15 18: 43: 44.100
  • print GETDATE()15 Mar 2011 6:44 PM değerini döndürür

Sanırım SQL Server, yazdırma işlevinde otomatik olarak yazıyor.

Tarihi böyle yazdırmam gerekiyor 2011-03-15 18:43:44.100

Yardımınız için teşekkürler.

Yanıtlar:


114

İlk olarak, SYSDATETIME()daha fazla hassasiyet arıyorsanız , muhtemelen kullanmalısınız .

Verilerinizi milisaniye ile biçimlendirmek için deneyin CONVERT(varchar, SYSDATETIME(), 121).

Diğer biçimler için, ve üzerindeki MSDN sayfasına bakınCASTCONVERT .


3
Yazdır CAST (GETDATE () olarak Datetime2 (7)) Bu da işe yarıyor, Cevabınız için teşekkürler.
Ramakrishnan

2
PRINT CAST (SYSDATETIME () AS NVARCHAR (200)) bir cazibe gibi çalışıyor
Gabriel Espinoza

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

GÜNCELLEME

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

33

SQL Server sürümünüz FORMAT işlevini destekliyorsa, bunu şu şekilde yapabilirsiniz:

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

12

bu ikisi aynı:

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

görüntü açıklamasını buraya girin


1

İzlemeyi Deneyin

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

1

Bu, new Date().getTime()JavaScript'teki ile eşdeğerdir :

Zamanı saniye cinsinden almak için aşağıdaki ifadeyi kullanın.

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

Zamanı milisaniye cinsinden almak için aşağıdaki ifadeyi kullanın.

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

1

Dönüş biçimi yyyy-aa-ss hh: mi: ss.sss ile bir işlev oluşturun

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

Misal

select fn_retornaFecha(getdate())

ve sonuç: 2016-12-21 10: 12: 50.123

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.