Kuidas MySQL -is kuupäevade ja kellaaegadega tõhusalt töötada

Kuidas MySQL -is kuupäevade ja kellaaegadega tõhusalt töötada

Kuupäevad ja kellaajad on olulised, need aitavad asju korraldada ja on iga tarkvara toimimise lahutamatu osa.





Nendega andmebaasis tõhusalt töötamine võib mõnikord tunduda segane, olgu see siis töö erinevates ajavööndites, kuupäevade lisamine / lahutamine ja muud toimingud.





Tutvuge erinevate MySQL -i funktsioonidega, mille abil saate hõlpsalt oma andmebaasis kuupäevi / aegu käsitseda ja hallata.



Töötamine ajavöönditega

Asjade standardimise tagamiseks peaksite töötama ainult UTC ajavööndi kuupäevade / kellaaegadega. Iga kord, kui loote ühenduse MySQL -i andmebaasiga, peaksite ajavööndi muutma UTC -ks, mida saab teha järgmise SQL -lausega:

SET TIME_ZONE = '+0:00'

Kuna kõik kuupäevad salvestatakse nüüd UTC -sse, teate alati, millega te töötate, muutes asjad lihtsamaks ja lihtsamaks.



alternatiivid info@ e -posti aadressile

Vajadusel saate hõlpsalt ajavööndit teisendada mis tahes kuupäeva- / ajatempli väärtusest CONVERT_TZ () MySQL funktsioon. Esmalt peate teadma nihet, näiteks Põhja -Ameerika läänerannikul on PST UTC -08: 00, nii et saate kasutada järgmist:

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

Selle tulemuseks on 2021-02-04 13:47:23 mis on täpselt õige. Kolm argumenti edastati CONVERT_TZ () on esimesed kuupäeva / ajatemplid, millega alustate (kasutage praegu () praeguse aja jaoks), teine ​​jääb alati '+0: 00' kuna kõik kuupäevad on andmebaasis sunnitud UTC -le ja viimane on nihe, mille tahame kuupäeva teisendada.





Kuupäevade liitmine / lahutamine

Mitu korda peate kuupäevadele lisama või neist lahutama, näiteks kui teil on vaja nädal tagasi kirjeid alla laadida või kuu aja pärast midagi ajastada.

Õnneks on MySQL -il suurepärane DATE_ADD () ja DATE_SUB () funktsioonid, mis muudavad selle ülesande äärmiselt lihtsaks. Näiteks saate SQL -lausega praegusest kuupäevast lahutada kaks nädalat:





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

Kui soovite selle asemel lisada olemasolevale ajatemplile kolm päeva, kasutage järgmist:

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

Mõlemad funktsioonid töötavad ühtemoodi, esimene argument on ajatempl, millega alustate, ja teine ​​argument on intervall, mille jooksul liita või lahutada. Teine argument vormistatakse alati samamoodi, alustades sõnast intervall millele järgneb arvväärtus ja intervall ise, mis võib olla ükskõik milline järgmistest: minut, tund, päev, nädal, kuu, kvartal, aasta.

Teise näitena, kui soovite hankida kõik viimase 34 minuti jooksul toimunud sisselogimised, võite kasutada SQL -avaldust, näiteks:

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

Nagu näete, tooks see kõik kirjed failist sisselogimisi tabel, mille sisselogimiskuupäev on suurem kui praegune aeg miinus 45 minutit või teisisõnu viimase 45 minuti jooksul.

Kuupäevade erinevus

Mõnikord peate hankima, kui palju aega on kahe kuupäeva vahel kulunud. Saate hõlpsasti saada päevade arvu kahe erineva kuupäeva vahel DATEDIFF funktsioon, näiteks allolev SQL -lause:

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

The DATEDIFF funktsioon võtab kaks argumenti, mõlemad on kuupäeva / kellaaja templid ja annab nende vahel päevade arvu. Ülaltoodud näide näitab päevade arvu, mis on möödunud 15. detsembrist 2020 kuni tänaseni.

Kahe kuupäeva vaheliste sekundite arvu saamiseks valige TO_SECONDS () funktsioon võib osutuda kasulikuks, näiteks:

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

Selle tulemuseks on kahe määratud kuupäeva vaheline sekundite arv.

Väljavõte kuupäevadest

On mitmeid MySQL -i funktsioone, mis võimaldavad teil hõlpsalt konkreetseid segmente kuupäevadest eraldada, näiteks kui soovite ainult kuud, aastapäeva või tundi. Siin on mõned näited sellistest funktsioonidest:

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

Ülaltoodud SQL -avaldused tooksid kaasa 02 , praegune tund ja 196 sest 15. september on aasta 196. päev. Siin on nimekiri kõigist saadaolevatest kuupäevade väljavõtmise funktsioonidest, millest igaüks võtab ainult ühe argumendi, millest kuupäev on välja võetud:

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

Näiteks kui soovite võib -olla hankida ainult kõigi kasutajate loomise kuu ja aasta, võite kasutada järgmist SQL -avaldust:

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

See tooks välja kõik kirjed kasutajatele tabelis ja näidake ID -d, kuud ja aastat, mil iga kasutaja loodi.

Kirjete rühmitamine kuupäevaperioodi järgi

Kuupäevafunktsioonide üheks suurepäraseks kasutamiseks on võimalus kirjeid grupeerida kuupäevaperioodi järgi RÜHMITA oma SQL -lausetes. Näiteks võib -olla soovite tõmmata 2020. aasta kõigi tellimuste kogusumma kuude kaupa. Võite kasutada SQL -avaldust, näiteks:

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

See tooks välja kõik aastal 2020 tehtud tellimused, grupeeriks need nende loomise kuu järgi ja tagastaks 12 kirjet, mis näitavad iga kuu tellitud kogusummat.

Pange tähele, et indeksi parema toimivuse tagamiseks on alati parem vältida kuupäevafunktsioonide, näiteks AASTA () SQL -lausete WHERE klausli piires ja kasutage selle asemel VAHEL operaatorit, nagu on näidatud ülaltoodud näites.

Ärge kunagi segage kuupäevadega uuesti

Ülaltoodud teadmisi kasutades saate nüüd tõhusalt töötada, tõlkida ja teha toiminguid kuupäevadel ja kellaaegadel mitmesugustel kasutusjuhtudel.

Pidage meeles, et lihtsuse huvides kasutage kuupäevadega töötamisel alati UTC -d ja kasutage ülaltoodud näpunäiteid oma tarkvara kuupäevade tõhusaks haldamiseks, olgu selleks siis lihtsate arvutuste lõpuleviimine või kuupäevade perioodide järgi rühmitatud aruannete hõlbus koostamine.

Kui olete SQL -is mõnevõrra uus, vaadake neid kindlasti olulised SQL -käsud SQL -i kasutamise parandamiseks.

Jaga Jaga Piiksuma E -post Professionaalsete aruannete ja dokumentide loomine Microsoft Wordis

See juhend uurib professionaalse aruande elemente ja vaatab läbi teie dokumendi struktureerimise, kujundamise ja viimistlemise Microsoft Wordis.

Loe edasi
Seotud teemad Autori kohta Matt Dizak(Avaldatud 18 artiklit) Veel Matt Dizakilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin