Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Dapatkan Zona Waktu Saat Ini dari Server di SQL Server (T-SQL)

Microsoft memperkenalkan CURRENT_TIMEZONE() fungsi di SQL Server 2019 untuk mengembalikan zona waktu server.

Lebih khusus lagi, fungsi ini "mengembalikan nama zona waktu yang diamati oleh server atau instance".

Contoh

Berikut ini contoh untuk didemonstrasikan.

SELECT CURRENT_TIMEZONE();

Hasil:

(UTC) Coordinated Universal Time

Dalam hal ini, zona waktu instance SQL Server saya adalah UTC.

Saya dapat melihat ini ketika saya menjalankan fungsi seperti SYSDATETIMEOFFSET() .

SELECT SYSDATETIMEOFFSET();

Hasil:

2020-04-01 00:14:44.0470785 +00:00

UTC memiliki offset zona waktu +00:00 (tanpa offset), dan ini tercermin saat saya mengembalikan tanggal dan waktu sistem.

Versi SQL Server Sebelumnya

Jika saya menjalankan CURRENT_TIMEZONE() terhadap contoh SQL Server 2017 saya, inilah yang saya dapatkan.

SELECT CURRENT_TIMEZONE();

Hasil:

Msg 195, Level 15, State 10, Line 1
'CURRENT_TIMEZONE' is not a recognized built-in function name.

Saya bahkan mengunduh wadah Docker terbaru dengan SQL Server 2017 untuk Linux untuk memeriksa ini, tetapi saya masih mendapatkan kesalahan ini.

Saya juga telah memeriksa instalasi SQL Server 2017 lainnya tetapi dengan hasil yang sama.

Di bagian komentar dokumentasi online untuk fungsi ini, Microsoft telah menyindir bahwa CURRENT_TIMEZONE() akan di-porting ke versi SQL Server sebelumnya, tetapi hal ini tampaknya tidak terjadi pada saat tulisan ini dibuat.

Sementara itu, Anda dapat mencoba kode berikut.

DECLARE @TimeZone VARCHAR(50)
EXEC MASTER.dbo.xp_regread 'HKEY_LOCAL_MACHINE',
'SYSTEM\CurrentControlSet\Control\TimeZoneInformation',
'TimeZoneKeyName',@TimeZone OUT
SELECT @TimeZone

Hasil:

UTC

Saya menjalankannya pada contoh yang sama dari SQL Server 2017 yang tidak mendukung CURRENT_TIMEZONE() , dan berhasil dengan baik.

Jelas, hasil Anda akan bergantung pada lokasi server Anda (atau setidaknya, untuk zona waktu apa server tersebut dikonfigurasi). Inilah yang saya dapatkan jika saya menjalankan pernyataan ini di server lain:

W. Europe Standard Time

SQL Server juga memiliki tampilan sistem yang memungkinkan Anda mengembalikan daftar zona waktu yang didukung, yang dapat Anda gunakan untuk memeriksa silang hasil Anda di sini.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Batas SQL NVARCHAR dan VARCHAR

  2. Terapkan fungsionalitas paging (lewati / ambil) dengan kueri ini

  3. SQL pilih di mana tidak dalam subquery tidak mengembalikan hasil

  4. Cara Membuat Tampilan di SQL Server

  5. SQL Server Internal:Rencana Caching Pt. I – Menggunakan Kembali Paket