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

Mengonversi tanggal secara efektif antara waktu UTC dan Lokal (mis. PST) di SQL 2005

Buat dua tabel lalu gabungkan untuk mengonversi tanggal GMT yang disimpan ke waktu lokal:

TimeZones     e.g.
---------     ----
TimeZoneId    19
Name          Eastern (GMT -5)
Offset        -5

Buat tabel penghematan waktu siang hari dan isi dengan informasi sebanyak mungkin (hukum setempat berubah setiap saat sehingga tidak ada cara untuk memprediksi seperti apa data tersebut beberapa tahun ke depan)

DaylightSavings
---------------
TimeZoneId    19
BeginDst      3/9/2008 2:00 AM
EndDst        11/2/2008 2:00 AM

Bergabunglah dengan mereka seperti ini:

inner join  TimeZones       tz on x.TimeZoneId=tz.TimeZoneId
left join   DaylightSavings ds on tz.TimeZoneId=ds.LocalTimeZone 
    and x.TheDateToConvert between ds.BeginDst and ds.EndDst

Konversikan tanggal seperti ini:

dateadd(hh, tz.Offset + 
    case when ds.LocalTimeZone is not null 
    then 1 else 0 end, TheDateToConvert)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kait SQL Server – Kait Lain Yang Perlu Diketahui

  2. Bisakah Saya Membatasi Koma Beberapa Baris Menjadi Satu Kolom?

  3. Cara Menemukan Format Tanggal yang Digunakan untuk Bahasa Tertentu di SQL Server (T-SQL)

  4. Bagaimana cara menetapkan nilai ke variabel menggunakan 'eksekusi' di t-sql?

  5. Apakah T-SQL memiliki fungsi agregat untuk menggabungkan string?