Datumi i vrijeme su važni, pomažu u održavanju stvari i sastavni su aspekt svake softverske operacije.
Učinkovit rad s njima u bazi podataka ponekad se može činiti zbunjujućim, bez obzira radi li se u različitim vremenskim zonama, dodavanjem / oduzimanjem datuma i drugim operacijama.
Naučite razne MySQL funkcije dostupne za jednostavno rukovanje datumima / vremenima u vašoj bazi podataka i upravljanje njima.
Rad s vremenskim zonama
Da biste pomogli da stvari budu standardizirane, trebali biste uvijek raditi s datumima / vremenima u UTC vremenskoj zoni. Svaki put kad uspostavite vezu s MySQL bazom podataka, trebali biste prebaciti vremensku zonu na UTC, što se može učiniti sa sljedećim SQL izrazom:
SET TIME_ZONE = '+0: 00'
Budući da će se svi datumi sada spremiti u UTC, uvijek znate s čime radite, čineći stvari jednostavnijim i jednostavnijim.
Kad je potrebno možete lako pretvori vremensku zonu bilo koje vrijednosti datuma / vremena s priručnikom CONVERT_TZ () MySQL funkcija. Prvo morate znati pomak, na primjer, PST na zapadnoj obali Sjeverne Amerike je UTC -08: 00, pa biste mogli koristiti:
PolyTime, nova aplikacija tvrtke MakeUseOf, olakšava usporedbu vremenskih zona širom svijeta. Evo što možete učiniti s tim i kako to funkcionira.
ODABERITE CONVERT_TZ ('2021-02-04 21:47:23', '+0: 00', '-8: 00');
To rezultira 2021-02-04 13:47:23 što je točno točno. Tri argumenta proslijeđena CONVERT_TZ () su prva oznaka datuma / vremena s kojom započinjete (koristite sada () za trenutno vrijeme), druga će uvijek biti '+0:00' budući da su svi datumi prisiljeni na UTC u bazi podataka, a posljednji je pomak u koji želimo pretvoriti datum.
Zbrajanje / oduzimanje datuma
Mnogo puta trebate dodati ili oduzeti od datuma, na primjer ako trebate dohvatiti zapise od prije tjedan dana ili zakazati nešto za mjesec dana.
Srećom MySQL ima izvrsne DATE_ADD () i DATE_SUB () funkcije čineći ovaj zadatak izuzetno jednostavnim. Na primjer, od trenutnog datuma možete oduzeti dva tjedna pomoću SQL izraza:
SELECT DATE_SUB (sada (), interval 2 tjedna);
Ako biste umjesto toga željeli dodati tri dana postojećoj vremenskoj oznaci, koristili biste:
ODABERITE DATUM_ADD ('2021-02-07 11:52:06', interval 3 dana);
Obje funkcije rade isto, prvi je argument vremenska oznaka s kojom započinjete, a drugi argument interval za zbrajanje ili oduzimanje. Drugi je argument uvijek oblikovan na isti način počevši od riječi interval nakon čega slijedi numerička vrijednost i sam interval, koji može biti bilo što od sljedećeg: sekunda, minuta, sat, dan, tjedan, mjesec, tromjesečje, godina.
Za drugi primjer, ako ste željeli dohvatiti sve prijave koje su se dogodile u protekle 34 minute, mogli biste upotrijebiti SQL izraz kao što je:
SELECT * FROM prijave WHERE login_date> = DATE_SUB (sada (), interval 45 minuta);
Kao što vidite, ovo će dohvatiti sve zapise s prijave tablica s datumom prijave većim od trenutnog vremena minus 45 minuta, ili drugim riječima, posljednjih 45 minuta.
Dobijte razliku između datuma
Ponekad trebate saznati koliko je vremena proteklo između dva datuma. Možete lako dobiti broj dana između dva različita datuma pomoću DATEDIFF funkcija, kao što je donji SQL izraz:
ODABERITE DATEDIFF (sada (), '2020-12-15');
The DATEDIFF funkcija uzima dva argumenta, oba su datumski / vremenski žigovi i daje broj dana između njih. Gornji primjer prikazat će broj dana proteklih od 15. prosinca 2020. do danas.
Da biste dobili broj sekundi između dva datuma, TO_SECONDS () funkcija može dobro doći, na primjer:
ODABERI TO_SECONDS (sada ()) - TO_SECONDS ('2021-02-05 11:56:41');
To će rezultirati brojem sekundi između dva navedena datuma.
Izdvoji segmente iz datuma
Postoje razne MySQL funkcije koje vam omogućuju da lako izvadite određene segmente iz datuma, na primjer ako želite samo mjesec, dan u godini ili sat. Evo nekoliko primjera takvih funkcija:
ODABERITE MJESEC ('2021-02-11 15:27:52');
ODABERITE SAT (sada ());
ODABERITE DAYOFYEAR ('2021-07-15 12:00:00');
Gore navedeni SQL izrazi rezultirali bi 02, trenutni sat i 196 jer je 15. rujna 196. dan u godini. Evo popisa svih dostupnih funkcija izdvajanja datuma, svaka uzima samo jedan argument, a datum se izdvaja iz:
- DRUGI ()
- MINUTA ()
- SAT ()
- DAN ()
- TJEDAN () - Broj 0 - 52 koji definira tjedan u godini.
- MJESEC ()
- KVARTAL () - Broj 1 - 4 koji definira tromjesečje godine.
- GODINA ()
- DAYOFYEAR () - Dan u godini (npr. 15. rujna = 196).
- LAST_DAY () - Zadnji dan u danom mjesecu.
- DATUM () - Datum u formatu GGGG-MM-DD bez vremena.
- VRIJEME () Vrijeme u HH: II: SS formatu bez datuma.
- TO_DAYS () - Broj dana od 0.
- TO_SECONDS () - Broj sekundi od 0.
- UNIX_TIMESTAMP () - Broj sekundi od epohe (1. siječnja 1970)
Na primjer, ako ste možda željeli dohvatiti samo mjesec i godinu u kojima su svi korisnici stvoreni, možete upotrijebiti SQL izraz kao što je:
ODABIR id, MONTH (created_at), YEAR (created_at) FROM korisnika;
Ovo bi dohvaćalo sve zapise u korisnika tablici i prikazati ID #, mjesec i godinu u kojima je svaki korisnik stvoren.
Grupiranje zapisa po datumskom razdoblju
Izvrsna upotreba funkcija datuma je mogućnost grupiranja zapisa prema datumskom razdoblju GRUPIRAJ PO unutar vaših SQL izraza. Na primjer, možda želite povući ukupan iznos svih narudžbi u 2020. grupiranih po mjesecima. Možete koristiti SQL izraz kao što je:
ODABERITE MJESEC (created_at), SUM (iznos) IZ narudžbi WHERE created_at IZMEĐU '2020-01-01 00:00:00' I '2020-12-31 23:59:59' GRUPA PO MJESECU (created_at);
To bi dohvaćalo sve narudžbe poslane u 2020. godini, grupiralo ih prema mjesecu u kojem su stvorene i vraćalo 12 zapisa koji prikazuju ukupan iznos naručen svakog mjeseca u godini.
Imajte na umu da je za bolje performanse indeksa uvijek najbolje izbjegavati korištenje datumskih funkcija poput GODINA() unutar klauzule WHERE SQL izraza i umjesto toga koristite IZMEĐU kao što je prikazano u gornjem primjeru.
Nikad se više nemojte zbuniti datumima
Koristeći gornje znanje, sada možete učinkovito raditi, prevoditi i izvoditi operacije u datumima i vremenima u širokom spektru slučajeva.
Ne zaboravite uvijek koristiti UTC kada radite s datumima radi jednostavnosti i koristite gornje savjete za učinkovito upravljanje datume u vašem softveru, bilo da se radi o jednostavnim izračunima ili jednostavnom povlačenju izvješća grupiranih po datumima razdoblja.
Ako ste pomalo novi u SQL-u, svakako ih provjerite bitne SQL naredbe kako biste poboljšali upotrebu SQL-a.
Ovaj vodič ispituje elemente profesionalnog izvješća i pregledava strukturiranje, oblikovanje i finaliziranje vašeg dokumenta u programu Microsoft Word.
- Nespecificirano
Pretplatite se na naše obavijesti
Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!
Još jedan korak…!
Potvrdite svoju e-adresu u e-pošti koju smo vam upravo poslali.