sql >> Database teknologi >  >> RDS >> Sqlserver

Effektiv konvertering af datoer mellem UTC og lokal (dvs. PST) tid i SQL 2005

Opret to tabeller, og kom derefter til dem for at konvertere gemte GMT-datoer til lokal tid:

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

Opret sommertidtabellen, og udfyld den med så mange oplysninger, som du kan (lokale love ændres hele tiden, så der er ingen måde at forudsige, hvordan dataene vil se ud i år ude i fremtiden)

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

Slut dig til dem sådan her:

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

Konverter datoer som denne:

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


  1. Hvordan kender jeg id'et, før jeg gemmer et objekt i jpa

  2. Hvad er SQL-operatører, og hvordan fungerer de?

  3. Sådan genereres en række datoer i SQL Server

  4. Rekursiv forespørgsel i SQL Server