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)