Kada se radi s podacima, uobičajeni izazov s kojim se često suočava uključuje izračunavanje različitih vremenskih intervala kao što je razlika u danima, mjesecima ili godinama između dva datuma. Ovi proračuni su sastavni dijelovi mnoštva aplikacija kao što su upravljanje platnim spiskom, planiranje projekata, pa čak i u praćenju rasta fenomena tokom vremena. SQL, jezik koji se najčešće koristi u upravljanju bazama podataka, pruža posebno uvjerljiv okvir za rješavanje ovih izazova. Jedan takav problem koji danas istražujemo je kako dobiti razliku datuma u satima koristeći SQL.
Dobivanje datumske razlike u satima: rješenje
SQL izraz potreban za izračunavanje razlike u satima između dva datuma nije previše složen. Funkcija DATEDIFF u SQL-u je vaš najbolji prijatelj u ovim situacijama.
SELECT DATEDIFF(HOUR, '2009-05-04 06:05:00', '2009-05-05 12:01:00');
U ovom primjeru, '2009-05-04 06:05:00' i '2009-05-05 12:01:00' su dva datuma. HOUR je jedinica u kojoj želimo razliku, a DATEDIFF je funkcija koja će izračunati ovu razliku.
Objašnjenje koda korak po korak
Funkcija DATEDIFF radi tako što uzima tri parametra. Prvi parametar je jedinica vremena u kojoj se izračunava razlika, to može biti godina, mjesec, dan ili čak sati kao u našem slučaju. Drugi i treći parametar su datumi između kojih se kvantificira razlika.
- DATUM: Ovo je ugrađena funkcija u SQL-u se koristi za pronalaženje razlike između dva datuma.
- SAT: Ovdje preciziramo da želimo našu razliku u satima. Ostale alternative uključuju SECOND, MINUTE, DAY, MONTH i YEAR.
- 'GGGG-MM-DD H:M:S': Ovdje specificiramo datume. SQL prepoznaje datume u formatu 'Godina-Mjesec-Dan Sat:Minuta:Druga'.
Kada se pokrene SQL izraz, on prvo oduzima drugi datum od prvog (što znači '2009-05-04 06:05:00' od '2009-05-05 12:01:00') i vraća razliku u termini sati.
Isti problem, različite biblioteke ili funkcije
Dok je DATEDIFF često korištena funkcija, postoji mnogo drugih biblioteka i funkcija u SQL-u za izračunavanje razlika u datumima. Na primjer, možete koristiti funkciju TIMESTAMPDIFF koja radi na vrlo sličan način kao DATEDIFF.
Pored toga, biblioteke kao što je MySQL takođe pružaju druge zgodne funkcije kao što su TIMEDIFF za izračunavanje razlike između dva vremena i TO_DAYS za pronalaženje razlike u danima između dva datuma. Sve ove funkcije služe kako bi SQL postao svestran i fleksibilan kao programski jezik, te moćan alat za rukovanje podacima o datumu i vremenu.
Razumijevanje vremenskih razlika između datuma i načina njihovog izračunavanja je uobičajen zahtjev u SQL-u i drugim programskim jezicima. To je stub upravljanja podacima o datumu i vremenu i stoga vrlo važna vještina za svakog programera.
