Bagaimana cara mencetak GETDATE () di SQL Server dengan waktu milidetik?


96

Saya ingin mencetak GETDATE () di SQL Server 2008, saya membutuhkan waktu dengan milidetik (ini untuk tujuan debugging - untuk menemukan waktu eksekusi sp)

Saya menemukan Perbedaan ini

  • SELECT GETDATE()mengembalikan 2011-03-15 18: 43: 44.100
  • print GETDATE()mengembalikan 15 Mar 2011 18:44

Saya pikir SQL Server secara otomatis melakukan typecast dalam fungsi cetak.

Saya perlu mencetak tanggal seperti ini 2011-03-15 18:43:44.100

Terima kasih atas bantuan Anda.

Jawaban:


114

Pertama, Anda mungkin harus menggunakan SYSDATETIME()jika Anda mencari lebih presisi.

Untuk memformat data Anda dengan milidetik, coba CONVERT(varchar, SYSDATETIME(), 121).

Untuk format lain, lihat halaman MSDN di CASTdanCONVERT .


3
Cetak CAST (GETDATE () sebagai Datetime2 (7)) Ini terlalu berhasil, Terima kasih atas jawaban Anda.
Ramakrishnan

2
PRINT CAST (SYSDATETIME () AS NVARCHAR (200)) bekerja seperti pesona
Gabriel Espinoza

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

MEMPERBARUI

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

33

Jika versi SQL Server Anda mendukung fungsi FORMAT, Anda dapat melakukannya seperti ini:

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

12

2 ini sama:

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

masukkan deskripsi gambar di sini


1

Coba Ikuti

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

1

Ini sama dengan new Date().getTime()di JavaScript:

Gunakan pernyataan di bawah ini untuk mengetahui waktu dalam hitungan detik.

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

Gunakan pernyataan di bawah ini untuk mengetahui waktu dalam milidetik.

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

1

Buat fungsi dengan format pengembalian yyyy-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

Contoh

select fn_retornaFecha(getdate())

dan hasilnya adalah: 2016-12-21 10: 12: 50.123

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.