Hogyan lehet hatékonyan dolgozni a dátumokkal és időkkel a MySQL -ben

Hogyan lehet hatékonyan dolgozni a dátumokkal és időkkel a MySQL -ben

A dátumok és időpontok fontosak, segítenek rendszerezni a dolgokat, és szerves részét képezik minden szoftverműveletnek.





A velük való hatékony együttműködés az adatbázison belül néha zavarosnak tűnhet, legyen szó akár a különböző időzónák közötti működésről, dátumok hozzáadásáról / kivonásáról és egyéb műveletekről.





Ismerje meg a különböző MySQL funkciókat, amelyekkel könnyen kezelheti és kezelheti a dátumokat / időket az adatbázisban.



Munka az időzónákkal

A dolgok szabványosítása érdekében mindig csak UTC időzóna szerinti dátumokkal / időkkel dolgozzon. Minden alkalommal, amikor kapcsolatot létesít a MySQL adatbázissal, kapcsolja át az időzónát UTC -re, amelyet a következő SQL utasítással tehet meg:

SET TIME_ZONE = '+0:00'

Mivel most minden dátum UTC -ben lesz mentve, mindig tudja, hogy mivel dolgozik, így egyszerűbbé és egyszerűbbé teszi a dolgokat.



az internet maga a fájdalom angolul

Ha szükséges, könnyen megteheti konvertálja az időzónát bármely dátum / időbélyeg értékét a praktikus CONVERT_TZ () MySQL függvény. Először ismernie kell az eltolást, például Észak -Amerika nyugati partján a PST UTC -08: 00, így használhatja:

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

Ennek eredménye 2021-02-04 13:47:23 ami pontosan helyes. A három érv átadásra került CONVERT_TZ () először az a dátum / időbélyeg, amellyel kezdi (használja most () az aktuális időhöz), a második mindig az lesz '+0: 00' mivel minden dátum UTC -re kényszerül az adatbázisban, és az utolsó az eltolás, amelyre a dátumot szeretnénk konvertálni.





Dátumok összeadása / kivonása

Sokszor hozzá kell adni vagy kivonni a dátumokat, például ha egy héttel ezelőtti rekordokat kell lekérni, vagy egy hónap múlva be kell ütemezni valamit.

Szerencsére a MySQL rendelkezik kiváló tulajdonságokkal DATE_ADD () és DATE_SUB () funkciók rendkívül megkönnyítik ezt a feladatot. Például kivonhat két hetet az aktuális dátumból az SQL utasítással:





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

Ha ehelyett három napot szeretne hozzáadni egy meglévő időbélyeghez, akkor a következőt használja:

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

Mindkét függvény ugyanúgy működik, az első argumentum a kezdő időbélyeg, a második argumentum pedig az összeadás vagy kivonás intervalluma. A második argumentum mindig ugyanolyan formátumú, mint a szó intervallum utána egy számérték és maga az intervallum, amely lehet a következők bármelyike: másodperc, perc, óra, nap, hét, hónap, negyedév, év.

Egy másik példában, ha le szeretné kérni az összes bejelentkezést, amely az elmúlt 34 percben történt, használhat egy SQL utasítást, például:

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

Amint láthatja, ez minden rekordot lekér a bejelentkezéseket táblázat, amelynek bejelentkezési dátuma nagyobb, mint a jelenlegi idő, mínusz 45 perc, vagy más szóval, az elmúlt 45 perc.

Különbség a dátumok között

Néha meg kell kapnia, mennyi idő telt el két dátum között. Könnyen lekérheti a két különböző dátum közötti napok számát a DATEDIFF függvény, például az alábbi SQL utasítás:

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

Az DATEDIFF függvény két argumentumot tartalmaz, mindkettő dátum / időbélyeg, és megadja a köztük lévő napok számát. A fenti példa 2020. december 15 -től napjainkig eltelt napok számát mutatja.

A két dátum közötti másodpercek számának megtekintéséhez a TO_SECONDS () A funkció jól jöhet, például:

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

Ez azt eredményezi, hogy a megadott dátumok között hány másodperc van.

Szegmensek kivonása a dátumokból

Számos MySQL -funkció létezik, amelyek lehetővé teszik bizonyos szegmensek egyszerű kinyerését a dátumokból, például ha csak a hónapot, az év napját vagy az órát szeretné. Íme néhány példa az ilyen funkciókra:

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

A fenti SQL utasítások azt eredményeznék 02 , az aktuális óra, és 196 mivel szeptember 15 -e az év 196. napja. Íme az összes rendelkezésre álló dátumkivonási funkció listája, amelyek mindegyike csak egy argumentumot tartalmaz, a dátumot a következőből kell kinyerni:

- 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)

Ha például csak az összes felhasználó létrehozásának hónapját és évét akarta lekérni, akkor használhat egy SQL utasítást, például:

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

Ez lekérné az összes rekordot a felhasználók táblázatot, és mutassa meg az azonosítószámot, a hónapot és az évet, amikor minden felhasználó létrejött.

A rekordok csoportosítása dátumidőszak szerint

A dátumfüggvények egyik kiváló használata a rekordok dátumidőszak szerinti csoportosítása CSOPORTOSÍT az SQL utasításaiban. Például lehet, hogy le szeretné húzni a 2020 -as megrendelések teljes összegét hónapok szerint csoportosítva. Használhat SQL utasítást, például:

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);

Ez lekérné a 2020 -ban leadott összes rendelést, csoportosítaná őket a létrehozásuk hónapja szerint, és 12 rekordot adna vissza, amelyek az év minden hónapjában megrendelt teljes összeget mutatják.

Kérjük, vegye figyelembe, hogy az index jobb teljesítménye érdekében mindig jobb elkerülni a dátumfüggvények használatát, mint pl ÉV() az SQL utasítások WHERE záradékán belül, és használja a KÖZÖTT operátor a fenti példában látható módon.

Soha ne tévesszen meg újra dátumokat

A fenti ismeretek segítségével most hatékonyan dolgozhat, fordíthat és végezhet műveleteket dátumokban és időpontokban, sokféle használati esetben.

Ne felejtse el, hogy az egyszerűség kedvéért mindig használja az UTC -t, ha dátumokkal dolgozik, és használja a fenti tippeket a dátumok hatékony kezeléséhez a szoftverben, legyen szó egyszerű számítások elvégzéséről vagy dátumperiódusok szerint csoportosított jelentésekről.

Ha még nem ismeri az SQL -t, nézze meg ezeket alapvető SQL parancsok hogy javítsa az SQL használatát.

Részvény Részvény Csipog Email Professzionális jelentések és dokumentumok létrehozása a Microsoft Word alkalmazásban

Ez az útmutató megvizsgálja a professzionális jelentés elemeit, és áttekinti a dokumentum strukturálását, stílusát és véglegesítését a Microsoft Word programban.

Olvassa tovább
Kapcsolódó témák A szerzőről Matt Dizak(18 cikk megjelent) Továbbiak Matt Dizak -tól

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, véleményeket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide