Kako učinkovito delati z datumi in časi v MySQL

Kako učinkovito delati z datumi in časi v MySQL

Datumi in časi so pomembni, pomagajo ohranjati organiziranost in so sestavni del vsakega delovanja programske opreme.





Učinkovito delo z njimi v zbirki podatkov se lahko včasih zdi zmedeno, ne glede na to, ali deluje v različnih časovnih pasovih, dodaja / odšteva datume in druge operacije.





Spoznajte različne funkcije MySQL, ki so na voljo za enostavno upravljanje in upravljanje datumov / ur v vaši zbirki podatkov.





Delo s časovnimi pasovi

Da bi stvari ostale standardizirane, bi morali delati le z datumi / urami v časovnem pasu UTC. Vsakič, ko vzpostavite povezavo z bazo podatkov MySQL, morate časovni pas preklopiti na UTC, kar lahko storite z naslednjo izjavo SQL:

SET TIME_ZONE = '+0:00'

Ker bodo vsi datumi shranjeni v UTC, vedno veste, s čim delate, zaradi česar so stvari bolj poenostavljene in jasne.



kako združiti datoteke pdf v google drive

Po potrebi lahko enostavno pretvorite časovni pas poljubno vrednost datuma / časovnega žiga CONVERT_TZ () Funkcija MySQL. Najprej morate poznati odmik, na primer PST na zahodni obali Severne Amerike je UTC -08: 00, zato lahko uporabite:

SELECT CONVERT_TZ('2021-02-04 21:47:23', '+0:00', '-8:00');

To ima za posledico 2021-02-04 13:47:23 kar je povsem pravilno. Trije argumenti so bili preneseni CONVERT_TZ () sta prvi datum / čas, s katerim začnete (uporabite zdaj () za trenutni čas), drugi bo vedno '+0: 00' ker so vsi datumi v bazi podatkov prisiljeni na UTC, zadnji pa je odmik, v katerega želimo pretvoriti datum.





Dodajanje / odštevanje datumov

Velikokrat morate datume dodati ali odšteti, na primer, če morate pridobiti zapise od pred enim tednom ali načrtovati nekaj za en mesec.

Na srečo je MySQL odličen DATE_ADD () in DATE_SUB () funkcije, ki to nalogo zelo olajšajo. Z stavkom SQL lahko na primer od trenutnega datuma odštejete dva tedna:





SELECT DATE_SUB(now(), interval 2 week);

Če bi namesto tega želeli obstoječemu časovnemu žigu dodati tri dni, bi uporabili:

SELECT DATE_ADD('2021-02-07 11:52:06', interval 3 day);

Obe funkciji delujeta enako, prvi argument je časovni žig, s katerim začnete, drugi argument pa je interval za dodajanje ali odštevanje. Drugi argument je vedno oblikovan enako, začenši z besedo interval sledi številčna vrednost in sam interval, ki je lahko kar koli od naslednjega: sekunda, minuta, ura, dan, teden, mesec, četrtletje, leto.

Na primer, če želite pridobiti vse prijave, ki so se zgodile v zadnjih 34 minutah, lahko uporabite stavek SQL, na primer:

SELECT * FROM logins WHERE login_date >= DATE_SUB(now(), interval 45 minute);

Kot lahko vidite, bi to pridobilo vse zapise iz prijave tabelo z datumom prijave, ki je daljši od trenutnega časa minus 45 minut ali z drugimi besedami, zadnjih 45 minut.

Pridobite razliko med datumi

Včasih morate ugotoviti, koliko časa je minilo med dvema datumoma. Z lahkoto lahko dobite število dni med dvema različnima datumoma DATIFIRANO funkcijo, kot je spodnji stavek SQL:

SELECT DATEDIFF(now(), '2020-12-15');

The DATIFIRANO funkcija sprejme dva argumenta, oba sta datumska / časovna žiga in podata število dni med njima. Zgornji primer prikazuje število dni, ki so minili od 15. decembra 2020 do danes.

Če želite dobiti število sekund med dvema datumoma, TO_SECONDS () funkcija lahko pride prav, na primer:

SELECT TO_SECONDS(now()) - TO_SECONDS('2021-02-05 11:56:41');

To bo povzročilo število sekund med dvema navedenima datumoma.

Izvleči segmente iz datumov

Obstajajo različne funkcije MySQL, ki vam omogočajo enostavno izvlečenje določenih segmentov iz datumov, na primer če želite le mesec, dan v letu ali uro. Tu je nekaj primerov takšnih funkcij:

SELECT MONTH('2021-02-11 15:27:52'); SELECT HOUR(now()); SELECT DAYOFYEAR('2021-07-15 12:00:00');

Zgornji stavki SQL bi privedli do 02 , trenutno uro in 196 saj je 15. september 196. dan v letu. Tu je seznam vseh razpoložljivih funkcij ekstrakcije datuma, od katerih ima vsaka le en argument, datum pa je izvlečen iz:

- SECOND()
- MINUTE()
- HOUR()
- DAY()
- WEEK() - Number 0 - 52 defining the week within the year.
- MONTH()
- QUARTER() - Number 1 - 4 defining the quarter of the year.
- YEAR()
- DAYOFYEAR() - The day of the year (eg. Sept 15th = 196).
- LAST_DAY() - The last day in the given month.
- DATE() - The date in YYYY-MM-DD format without the time.
- TIME() The time in HH:II:SS format without the date.
- TO_DAYS() - The number of days since A.D. 0.
- TO_SECONDS() - The number of seconds since A.D. 0.
- UNIX_TIMESTAMP() - The number of seconds since the epoch (Jan 1st, 1970)

Če ste na primer želeli le pridobiti mesec in leto, v katerem so bili ustvarjeni vsi uporabniki, lahko uporabite stavek SQL, na primer:

SELECT id, MONTH(created_at), YEAR(created_at) FROM users;

S tem bi pridobili vse zapise v uporabniki tabelo in prikaže id#, mesec in leto, v katerem je bil ustvarjen vsak uporabnik.

Razvrščanje zapisov po datumskem obdobju

Ena odlična uporaba datumskih funkcij je možnost združevanja zapisov po datumskem obdobju z uporabo GROUP BY znotraj vaših stavkov SQL. Na primer, morda želite povzeti skupni znesek vseh naročil v letu 2020, razvrščenih po mesecih. Uporabite lahko stavek SQL, na primer:

SELECT MONTH(created_at), SUM(amount) FROM orders WHERE created_at BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' GROUP BY MONTH(created_at);

Tako bi pridobili vsa naročila, oddana v letu 2020, jih razvrstili po mesecu, ko so bili ustvarjeni, in vrnili 12 zapisov, ki prikazujejo skupni znesek, naročen vsak mesec v letu.

Upoštevajte, da je za boljše delovanje indeksa vedno najbolje, da se izognete uporabi datumskih funkcij, kot so LETO () znotraj stavka WHERE stavkov SQL in namesto tega uporabite MED operaterja, kot je prikazano v zgornjem primeru.

Nikoli več se ne zmešajte z datumi

Z uporabo zgornjega znanja lahko zdaj učinkovito delate, prevajate in izvajate operacije v datumih in urah v najrazličnejših primerih uporabe.

Pri delu z datumi za preprostost vedno uporabite UTC in uporabite zgornje nasvete za učinkovito upravljanje datumov v vaši programski opremi, pa naj gre za dokončanje preprostih izračunov ali enostavno povlečenje poročil, razvrščenih po datumskih obdobjih.

Če ste nekoliko novi v SQL, si oglejte te bistveni ukazi SQL za izboljšanje uporabe SQL.

Deliti Deliti Cvrkutati E-naslov Kako ustvariti strokovna poročila in dokumente v programu Microsoft Word

Ta priročnik preučuje elemente strokovnega poročila in pregleduje strukturiranje, oblikovanje in dokončanje vašega dokumenta v programu Microsoft Word.

Preberite Naprej
Sorodne teme O avtorju Matt Dizak(18 objavljenih člankov) Več od Matta Dizaka

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite