sql >> Databasteknik >  >> RDS >> Sqlserver

Effektiv konvertering av datum mellan UTC och lokal (dvs. PST) tid i SQL 2005

Skapa två tabeller och gå sedan med i dem för att konvertera lagrade GMT-datum till lokal tid:

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

Skapa sommartidtabellen och fyll den med så mycket information du kan (lokala lagar ändras hela tiden så det finns inget sätt att förutsäga hur data kommer att se ut år i framtiden)

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

Gå med dem så här:

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

Konvertera datum så här:

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


  1. Oracle Konvertera sekunder till timmar:minuter:sekunder

  2. Hur ändrar jag kolumns standardvärde i PostgreSQL?

  3. Beräkna percentilen i MySQL baserat på totaler

  4. Databasdesign 101