Perintah SQL untuk memeriksa tanggal dan waktu saat ini (stempel waktu) di SQL Server

Database


Artikel ini membahas berbagai perintah SQL (fungsi) untuk mengembalikan tanggal dan waktu saat ini (stempel waktu) di SQL Server.

pengantar

Dalam aplikasi database, tanggal dan waktu saat ini digunakan dalam beberapa cara. Baik Anda membuat laporan audit, catatan penjualan, pemicu basis data, atau hanya karena Anda memerlukan tanggal dan waktu saat ini, mengetahui berbagai cara untuk mengambil tanggal dan waktu saat ini bisa sangat berguna. Artikel ini akan membahas berbagai fungsi tanggal saat ini T-SQL, kapan menggunakannya, dan bagaimana menggunakannya.

Artikel ini meninjau perintah SQL DateTime (fungsi) untuk SQL Server, Azure SQL Database, Managed Instance (MI), dan Azure Synapse Analytics.

  • TANGGAL()
  • CURRENT_TIMESTAMP
  • SYSDATETIME
  • GETUTCDATE
  • SYSUTCDATETIME
  • SYSDATETIMEOFFSET

Mari kita mulai melihat artikel-artikel ini dan memahami perbedaan di antara mereka.

SQL Server GETDATE() fungsi.

GETDATE() Perintah SQL (fungsi) Mengembalikan stempel waktu sistem tanpa menentukan offset zona waktu. Ini mengambil nilai ini sesuai dengan zona waktu komputer (server) yang mendasarinya. Tipe data adalah nilai kembalian waktu perjanjian

Namun, menjalankan fungsi GETDATE() di Azure SQL Database dan Azure Synapse Analytics mengembalikan UTC (Koordinat Waktu Universal).

SQL GETDATE

Anda dapat menambah atau mengurangi tanggal dari fungsi GETDATE(). Misalnya, GETDATE()-1 mengembalikan stempel waktu kemarin sementara GETDATE()+1 mengembalikan stempel waktu besok.


Dapatkan nilai hari ini dan sebelumnya

Jika kita perlu menafsirkan nilai pengembalian zona waktu non-UTC untuk Azure SQL Database atau SQL Server, gunakan fungsi AT TIME ZONE.

Misalnya, kita ingin mendapatkan nilai Zona Waktu Standar India (IST) dari fungsi getdate(). Skrip berikut mendefinisikan zona waktu saat ini sebagai UTC dan kemudian mengonversinya ke nilai zona waktu yang diinginkan.


di zona waktu

Untuk daftar zona waktu Azure yang didukung, cari tabel sistem di bawah ini.


Nilai zona waktu

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP Pernyataan SQL (fungsi) mengembalikan stempel waktu sistem, mirip dengan fungsi GETDATE(). Ini adalah ANSI yang setara dengan fungsi GETDATE() dan dapat digunakan secara bergantian dalam pernyataan T-SQL.


CURRENT_TIMESTAMP

Seperti yang ditunjukkan di bawah ini, kita dapat mengganti GETDATE() dengan CURRENT_TIMESTAMP dengan fungsi AT TIME ZONE untuk mengambil nilai zona waktu yang diinginkan.


CURRENT_TIMESTAMP DENGAN ZONA WAKTU

SYSDATETIME()

Fungsi SYSDATETIME() mengembalikan nilai yang lebih tepat dalam sepersekian detik. Tipe data dari nilai kembalian adalah datetime2 dengan 7 presisi.


SYSDATETIME

GETUTCDATE() dan SYSUTCDATETIME()

Misalkan Anda perlu mendapatkan stempel waktu UTC terlepas dari zona waktu sistem Anda. Dalam hal ini, Anda dapat menggunakan pernyataan SQL (fungsi) GETUTCDATE () seperti yang ditunjukkan di bawah ini.


GETUTCDATE

  • Tipe data nilai pengembalian: waktu perjanjian
  • Offset zona waktu termasuk: Tidak

SYSUTCDATE() juga mengembalikan nilai zona UTC dengan presisi yang lebih tinggi. Tipe data dari nilai kembaliannya adalah DateTime2 dengan presisi 7.


SYSUTCDATETIME

SYSDATETIMEOFFSET()

SYSDATETIMEOFFSET() Perintah SQL (fungsi) Mengembalikan nilai berdasarkan zona waktu sistem operasi yang mendasarinya. Ini mencakup akurasi yang lebih tinggi bersama dengan offset zona waktu.

Seperti yang ditunjukkan di bawah, ini berisi offset zona waktu +00:00, yang menunjukkan bahwa itu adalah UTC.


SYSDATETIMEOFFSET

Permintaan untuk memeriksa output yang dikembalikan oleh berbagai fungsi DateTime

Kueri berikut menggabungkan semua fungsi DateTime SQL Server ke dalam satu pernyataan SELECT. Anda dapat menjalankan kueri berikut untuk membandingkan nilai yang dikembalikan. Ini mengembalikan nilai dari GETDATE(), CURRENT_TIMESTAMP, SYSDATETIME, SYSDATETIMEOFFSET, GETUTCDATE, SYSUTCDATETIME seperti yang ditunjukkan di bawah ini.

Dalam database Azure SQL saya, ia mengembalikan nilai berikut.

  • GETDATE(): 2021-12-25 02:50:40.767
  • CURRENT_TIMESTAMP: 2021-12-25 02:50:40.767
  • SYSDATETIME():2021-12-25 02:50:40.7500000
  • SYSDATETIMEOFFSET(): 2021-12-25 02:50:40.7500000 +00:00
  • GETUTCDATE(): 2021-12-25 02:50:40,753
  • WAKTU SISTEM: 2021-12-25 02:50:40,7534774

Dalam banyak kasus, kita tidak membutuhkan nilai waktu atau offset. Dalam hal ini, kita dapat menggunakan fungsi CONVERT() dan semua fungsi akan mengembalikan tanggal seperti yang ditunjukkan di bawah ini.


Berbagai fungsi DateTime

Demikian pula, kita dapat menggunakan argumen waktu dalam fungsi CONVERT() untuk mengekstrak bagian stempel waktu dari output, seperti yang ditunjukkan di bawah ini.


Dapatkan nilai waktu dari fungsi DateTime

Mari kita jelajahi beberapa kasus penggunaan fungsi DateTime yang berbeda di SQL Server dan Azure SQL Database.

Contoh berikut membuat tabel yang disebut [DemoSQLTable] dengan beberapa kolom dan nilai defaultnya dari fungsi DateTime – GETDATE(), CURRENT_TIMESTAMP dan SYSDATETIME(). Saat kami menyisipkan catatan tanpa nilai eksplisit apa pun, itu mengambil data dari fungsi DateTime ini dan menyimpannya di kolom yang sesuai.


Buat tabel dengan nilai default

Bisakah kita menggunakan fungsi DateTime sebagai parameter prosedur tersimpan?

Kita sering membutuhkan data dari tabel database yang memenuhi rentang tanggal atau waktu tertentu. Misalnya, jika kita menyimpan catatan penjualan pelanggan dalam sebuah tabel, kita mungkin tertarik untuk mengetahui pesanan untuk hari ini atau untuk bulan atau tahun tertentu.

Mari buat prosedur tersimpan menggunakan kueri berikut untuk mendemonstrasikan. Mendefinisikan parameter @MyDateTime dengan tipe data DATETIME. Selanjutnya, kami ingin memfilter catatan dari bidang [SalesLT].[SalesOrderDetail] Tabel berdasarkan parameter

Kami ingin menggunakan fungsi DateTime untuk memberikan nilai parameter @MyDateTime. Jika kita langsung melewati fungsi DateTime untuk nilai parameter, itu akan mengembalikan kesalahan seperti yang ditunjukkan di bawah ini.


Kesalahan prosedur tersimpan

Untuk menjalankan prosedur tersimpan dengan fungsi DateTime sebagai nilai parameter, kita dapat mendeklarasikan variabel dan menyimpan output dari fungsi tersebut. Misalnya, di T-SQL, kami mendeklarasikan parameter @I dan menetapkan nilainya menggunakan fungsi GETDATE().

Script berfungsi dengan baik tanpa kesalahan. Dalam kasus saya, tidak ada baris yang cocok untuk predikat. Oleh karena itu, ia mengembalikan 0 baris yang terpengaruh.


Cara menentukan nilai parameter dalam metode Tersimpan

Catatan: Fungsi DateTime di SQL Server tidak bersifat deterministik. Oleh karena itu, tampilan dan ekspresi yang merujuk ke fungsi ini di kolom yang sama tidak dapat diindeks.

Hasil

Artikel ini membahas beberapa cara untuk menggunakan pernyataan SQL (fungsi) untuk mengambil tanggal dan waktu saat ini. Saya juga membahas kapan harus menggunakan fungsi-fungsi ini dan bagaimana menggunakannya. Kami harap artikel ini memberi Anda beberapa ide untuk menggunakan fungsi-fungsi ini di aplikasi Anda.

Jika Anda memiliki pertanyaan tentang fungsi DateTime yang dibahas, silakan posting di bagian komentar di bawah. Terima kasih telah belajar dan beri tahu kami pendapat Anda di komentar.

Rajendra Gupta
Postingan terbaru Rajendra Gupta (Lihat semua)



Source link

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *