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.

Ramakrishnan
sumber

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 .

Adam Robinson
sumber
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))
Kris Ivanov
sumber
33

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

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

2 ini sama:

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

masukkan deskripsi gambar di sini

Marcello Miorelli
sumber
1

Coba Ikuti

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

admincedep
sumber