Tạo hai bảng và sau đó kết hợp với chúng để chuyển đổi ngày giờ GMT đã lưu trữ thành giờ địa phương:
TimeZones e.g.
--------- ----
TimeZoneId 19
Name Eastern (GMT -5)
Offset -5
Tạo bảng tiết kiệm ánh sáng ban ngày và điền vào bảng đó với càng nhiều thông tin càng tốt (luật địa phương thay đổi liên tục nên không có cách nào để dự đoán dữ liệu sẽ như thế nào trong các năm trong tương lai)
DaylightSavings
---------------
TimeZoneId 19
BeginDst 3/9/2008 2:00 AM
EndDst 11/2/2008 2:00 AM
Tham gia với họ như thế này:
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
Chuyển đổi các ngày như thế này:
dateadd(hh, tz.Offset +
case when ds.LocalTimeZone is not null
then 1 else 0 end, TheDateToConvert)