Riješeno: pretvoriti utc u est

Posljednje ažuriranje: 09/13/2023

Rad s UTC (koordinirano univerzalno vrijeme) u SQL-u može biti malo težak, posebno ako ga trebate pretvoriti u različite vremenske zone, kao što je EST (istočno standardno vrijeme), na primjer. Još je teže kada uzmete u obzir ljetno računanje vremena. Međutim, uz pravilno razumijevanje i primjenu funkcija, zadatak postaje lakši. Važan dio ovog zadatka je razumijevanje koncepata UTC i EST i njihovog međusobnog odnosa.

Razumijevanje UTC i EST

UTC, skraćeno od Coordinated Universal Time, je vremenski standard koji svijet koristi za postavljanje svojih satova. Smatra se osnovnim vremenom od kojeg se računaju sve ostale vremenske zone. S druge strane, EST se odnosi na istočno standardno vrijeme, što je UTC-5. Što znači, pet sati je iza UTC. Međutim, tokom ljetnog računanja vremena, postaje UTC-4.

Prilikom pretvaranja između ove dvije vremenske zone, morat ćete koristiti specifične SQL funkcije i brinuti se za ljetno računanje vremena.

SQL funkcije za konverziju vremena

Da biste pretvorili UTC u EST u SQL-u, općenito biste koristili funkciju DATEADD. Ova funkcija dodaje određenu vrijednost dijelu datuma ili vremena u datumu. Evo SQL isječka za ovo:

SELECT DATEADD(hh, -5, GetUTCDate())

U ovom primjeru, GetUTCDate() dobiva trenutni UTC datum i vrijeme, a funkcija DATEADD oduzima 5 sati od njega da bi ga pretvorila u EST.

Rukovanje ljetnim računanjem vremena

Komplikacija proizlazi iz činjenice da istočno standardno vrijeme postaje istočno ljetno vrijeme (EDT) za dio godine. EDT je ​​samo 4 sata iza UTC. Stoga je potrebno sredstvo za prilagođavanje ovoj činjenici prilikom konverzije.

Na primjer, ovaj isječak koda računa za ljetno računanje vremena:

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

Zamršen dio ovog koda je potreba da se odredi tačna vremena i datuma početka i završetka ljetnog računanja vremena, što se mijenja iz godine u godinu. Ovo zahtijeva napredniju SQL stručnost.

Primjena: Planiranje i vođenje evidencije

Razumijevanje kako pretvoriti UTC u EST u SQL-u posebno je korisno kada se bavite sistemima za planiranje, vođenjem zapisa i bilo kojim programom koji rukuje datumom i vremenom. Primjene takvih konverzija uključuju sisteme za rezervacije, bankarske sisteme, evidentiranje događaja u različitim vremenskim zonama, da spomenemo samo neke.

To je takođe ključno u osiguravanju tačnog čuvanja istorijskih podataka, jer osigurava da je vrijeme ujednačeno bez obzira na varijacije vremenske zone.

Druge konverzije vremenskih zona

Osim pretvaranja UTC u EST, možda ćete morati i pretvoriti UTC u druge vremenske zone. Slično gore navedenom, također ćete koristiti funkciju DATEADD, a razlika je u broju sati koje dodajete ili oduzimate od UTC datuma i vremena.

Zapamtite, razumijevanje ovih konverzija vremenskih zona i mogućnost njihove precizne primjene je neophodna vještina za svakog SQL programera, posebno ako vaša aplikacija rukuje podacima s različitih geografskih lokacija.

Slični postovi: