Masalah:
Anda ingin mendapatkan tanggal dan waktu saat ini di T-SQL, tetapi Anda tidak ingin zona waktu diimbangi.
Solusi:
Kami akan menggunakan GETDATE(), CURRENT_TIMESTAMP, dan SYSDATETIME() untuk mendapatkan tanggal dan waktu saat ini tanpa offset zona waktu. Dua fungsi pertama memungkinkan kita untuk mendapatkan waktu saat ini dengan presisi yang lebih rendah. (GETDATE() adalah fungsi T-SQL, sedangkan CURRENT_TIMESTAMP adalah fungsi SQL Standard; kedua fungsi mengembalikan tipe data yang sama). Fungsi ketiga, SYSDATETIME(), mendapatkan waktu presisi yang lebih tinggi.
SELECT CURRENT_TIMESTAMP ;
Berikut hasil querynya:
2019-08-14 10:01:06.983
Diskusi:
Dalam database SQL Server, CURRENT_TIMESTAMP
fungsi mengembalikan tanggal dan waktu saat ini (yaitu waktu pada mesin tempat instance SQL Server berjalan) sebagai datetime
tipe data. Datetime
adalah waktu presisi rendah yang memiliki maksimum tiga detik pecahan. (Dalam contoh kita, ini adalah 983.)
GETDATE() mirip dengan CURRENT_TIMESTAMP
dan mengembalikan hasil yang sama. Bedanya CURRENT_TIMESTAMP
adalah standar SQL, sedangkan GETDATE() khusus untuk SQL Server.
SELECT GETDATE() ;
Tentu saja, jika Anda ingin mendapatkan tanggal dan waktu saat ini dengan presisi lebih tinggi tanpa offset zona waktu, Anda dapat menggunakan fungsi SYSDATETIME() . Fungsi ini mengembalikan datetime2
tipe data dengan tujuh pecahan detik. Perhatikan contoh di bawah ini:
SELECT SYSDATETIME() ;
Ini hasilnya:
2019-08-14 10:01:06.9754163