Erstellen Sie zwei Tabellen und verbinden Sie sie dann, um gespeicherte GMT-Daten in Ortszeit umzuwandeln:
TimeZones e.g.
--------- ----
TimeZoneId 19
Name Eastern (GMT -5)
Offset -5
Erstellen Sie die Sommerzeittabelle und füllen Sie sie mit so vielen Informationen wie möglich (lokale Gesetze ändern sich ständig, daher gibt es keine Möglichkeit vorherzusagen, wie die Daten in Jahren aussehen werden)
DaylightSavings
---------------
TimeZoneId 19
BeginDst 3/9/2008 2:00 AM
EndDst 11/2/2008 2:00 AM
Schließen Sie sich ihnen wie folgt an:
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
Konvertieren Sie Daten wie folgt:
dateadd(hh, tz.Offset +
case when ds.LocalTimeZone is not null
then 1 else 0 end, TheDateToConvert)