sql >> Database >  >> RDS >> Sqlserver

Datums effectief converteren tussen UTC en lokale (dwz PST) tijd in SQL 2005

Maak twee tabellen en voeg ze vervolgens toe om opgeslagen GMT-datums om te zetten naar lokale tijd:

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

Maak de zomertijdtabel en vul deze met zoveel mogelijk informatie (lokale wetten veranderen voortdurend, dus het is niet te voorspellen hoe de gegevens er in de toekomst uit zullen zien)

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

Sluit je als volgt bij hen aan:

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

Converteer datums als volgt:

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


  1. Oracle reguliere expressies. Gevaarlijk bereik

  2. [Video] Inleiding tot JSON-gegevenstypen in PostgreSQL

  3. ECONNREFUSED voor Postgres op nodeJS met dockers

  4. Hoe te groeperen op maand vanuit het veld Datum met sql