Työskentely UTC:n (Coordinated Universal Time) kanssa SQL:ssä voi olla hieman hankalaa, varsinkin jos se on muutettava eri aikavyöhykkeille, kuten esimerkiksi EST (Eastern Standard Time). Se on vielä hankalampaa, kun otetaan huomioon kesäaika. Toimintojen oikea ymmärtäminen ja soveltaminen helpottaa kuitenkin tehtävää. Tärkeä osa tätä tehtävää on ymmärtää UTC:n ja EST:n käsitteet ja miten ne liittyvät toisiinsa.
UTC:n ja EST:n ymmärtäminen
UTC, lyhenne sanoista Coordinated Universal Time, on aikastandardi, jota maailma käyttää kellojen asettamiseen. Sitä pidetään perusajana, josta kaikki muut aikavyöhykkeet lasketaan. Toisaalta EST viittaa itäiseen normaaliaikaan, joka on UTC-5. Se tarkoittaa, että se on viisi tuntia jäljessä UTC:stä. Kesäaikana siitä tulee kuitenkin UTC-4.
Muunnettaessa näiden kahden aikavyöhykkeen välillä, sinun on käytettävä tiettyjä SQL-funktioita ja otettava huomioon myös kesäaika.
SQL-funktiot ajan muuntamiseen
Muuntaaksesi UTC:n EST:ksi SQL:ssä, käytät yleensä DATEADD-funktiota. Tämä toiminto lisää tietyn arvon päivämäärän tai kellonajan osaan. Tässä on SQL-pätkä tätä varten:
SELECT DATEADD(hh, -5, GetUTCDate())
Tässä esimerkissä GetUTCDate() saa nykyisen UTC-päivämäärän ja -ajan, ja DATEADD-funktio vähentää siitä 5 tuntia muuntaakseen sen EST:ksi.
Kesäajan käsittely
Monimutkaisuus johtuu siitä, että itäinen normaaliaika muuttuu itäiseksi kesäaioksi (EDT) osan vuodesta. EDT on vain 4 tuntia UTC:tä jäljessä. Siksi muunnoksia tehtäessä tarvitaan keino sopeutua tähän tosiasiaan.
Esimerkiksi tämä koodinpätkä ottaa huomioon kesäajan:
SELECT
CASE
WHEN DATEADD(hh, -5, GetUTCDate()) BETWEEN
(SELECT DATEADD(hh, -5, dateadd(dd, 0-datediff(dd, 0, GetUTCDate()),
dbo.GetDaylightSavingsSwitchPoint_ForYear(DATEPART(YEAR,GetUTCDate()),1)))) AND
(SELECT DATEADD(hh, -5, dateadd(dd, 0-datediff(dd, 0, GetUTCDate()),
dbo.GetDaylightSavingsSwitchPoint_ForYear(DATEPART(YEAR,GetUTCDate()),2))))
THEN DATEADD(hh, -4, GetUTCDate()) ELSE DATEADD(hh, -5, GetUTCDate())
END AS EST
Tämän koodin hankala osa on tarve määrittää tarkat ajat ja päivämäärät kesäajan alkamis- ja päättymispäivät, jotka vaihtelevat vuodesta toiseen. Tämä vaatii kehittyneempää SQL-osaamista.
Sovellus: Aikataulut ja kirjanpito
UTC-muunnoksen ymmärtäminen EST:ksi SQL:ssä on erityisen hyödyllistä, kun käsitellään aikataulujärjestelmiä, arkistointia ja mitä tahansa päivämäärää ja kellonaikaa käsittelevää ohjelmaa. Tällaisten muunnosten sovelluksia ovat varausjärjestelmät, pankkijärjestelmät, tapahtumien kirjaaminen eri aikavyöhykkeillä, vain muutamia mainitakseni.
Se on myös avainasemassa historiallisten tietojen tarkan säilyttämisen varmistamiseksi, koska se varmistaa, että säilytettävä aika on tasainen aikavyöhykkeen vaihteluista riippumatta.
Muut aikavyöhykemuunnokset
Sen lisäksi, että muunnat UTC:n EST:ksi, saatat joutua muuttamaan UTC:t muille aikavyöhykkeille. Kuten yllä, käytät myös DATEADD-toimintoa, jonka ero on tuntien lukumäärä, jonka lisäät tai vähennät UTC-päivämäärän ja -ajan.
Muista, että näiden aikavyöhykemuunnosten ymmärtäminen ja niiden tarkka soveltaminen on jokaisen SQL-kehittäjän pakollinen taito, varsinkin jos sovelluksesi käsittelee tietoja eri maantieteellisistä paikoista.
