Kaip efektyviai dirbti su datomis ir laikais „MySQL“

Kaip efektyviai dirbti su datomis ir laikais „MySQL“

Datos ir laikas yra svarbūs, jie padeda tvarkyti dalykus ir yra neatskiriama bet kurios programinės įrangos operacijos dalis.





Efektyvus darbas su jais duomenų bazėje kartais gali atrodyti painus, nesvarbu, ar tai veikia įvairiose laiko juostose, ar pridedamos / atimamos datos, ar kitos operacijos.





Sužinokite apie įvairias „MySQL“ funkcijas, skirtas lengvai valdyti ir valdyti datas / laikus savo duomenų bazėje.



Darbas su laiko juostomis

Jei norite, kad viskas būtų standartizuota, visada turėtumėte dirbti tik su datomis / laikais UTC laiko juostoje. Kiekvieną kartą, kai užmezgate ryšį su „MySQL“ duomenų baze, turėtumėte pakeisti laiko juostą į UTC, o tai galima padaryti naudojant šį SQL sakinį:

SET TIME_ZONE = '+0:00'

Kadangi visos datos dabar bus išsaugotos UTC, jūs visada žinote, su kuo dirbate, todėl viskas bus paprasčiau ir lengviau.



kaip naudoti nešiojamąjį kompiuterį kaip monitorių

Kai reikia, galite lengvai konvertuoti laiko juostą bet kurią datos / laiko žymos vertę CONVERT_TZ () MySQL funkcija. Pirmiausia turite žinoti poslinkį, pavyzdžiui, PST vakarinėje Šiaurės Amerikos pakrantėje yra UTC -08: 00, todėl galite naudoti:

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

Dėl to atsiranda 2021-02-04 13:47:23 kas yra tiksliai teisinga. Trys argumentai perduoti CONVERT_TZ () pirmiausia yra datos / laiko žymė, nuo kurios pradedate (naudokite dabar () dabartiniam laikui), antroji visada bus „+0: 00“ kadangi visos datos yra priverstos UTC duomenų bazėje, o paskutinis yra poslinkis, į kurį norime konvertuoti datą.





Pridėti / atimti datas

Daug kartų reikia pridėti arba atimti datas, pvz., Jei reikia gauti įrašus prieš savaitę arba suplanuoti ką nors po mėnesio.

Laimei, „MySQL“ turi puikų DATE_ADD () ir DATE_SUB () funkcijas, kurios labai palengvina šią užduotį. Pvz., Galite iš dabartinės datos atimti dvi savaites naudodami SQL sakinį:





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

Jei vietoj to norėtumėte pridėti tris dienas prie esamos laiko žymos, naudokite:

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

Abi funkcijos veikia vienodai, pirmasis argumentas yra laiko žymė, nuo kurios pradedate, o antrasis argumentas yra intervalas, kurį reikia pridėti arba atimti. Antrasis argumentas visada formuojamas vienodai, pradedant žodžiu intervalas po to pateikiama skaitinė vertė ir pats intervalas, kuris gali būti bet kuris iš šių: antra, minutė, valanda, diena, savaitė, mėnuo, ketvirtis, metai.

Pavyzdžiui, jei norite gauti visus prisijungimus, įvykusius per pastarąsias 34 minutes, galite naudoti SQL sakinį, pvz .:

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

Kaip matote, tai atgautų visus įrašus iš prisijungimus lentelę, kurios prisijungimo data yra didesnė už dabartinį laiką, atėmus 45 minutes, arba, kitaip tariant, per pastarąsias 45 minutes.

Gaukite skirtumą tarp datų

Kartais reikia sužinoti, kiek laiko praėjo tarp dviejų pasimatymų. Galite lengvai gauti dienų skaičių tarp dviejų skirtingų datų naudodami DATEDIFF funkciją, pvz., žemiau pateiktą SQL sakinį:

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

The DATEDIFF funkcija turi du argumentus, abu yra datos / laiko žymos ir nurodo dienų skaičių tarp jų. Aukščiau pateiktame pavyzdyje bus parodytas dienų skaičius nuo 2020 m. Gruodžio 15 d. Iki šiandien.

Norėdami gauti sekundžių skaičių tarp dviejų datų, TO_SECONDS () Ši funkcija gali būti naudinga, pavyzdžiui:

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

Dėl to tarp dviejų nurodytų datų atsiras sekundžių skaičius.

Ištraukite segmentus iš datų

Yra įvairių „MySQL“ funkcijų, leidžiančių lengvai išgauti konkrečius segmentus iš datų, pavyzdžiui, jei norite tik mėnesio, metų dienos ar valandos. Štai keletas tokių funkcijų pavyzdžių:

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

Aukščiau pateikti SQL sakiniai sukels 02 , dabartinę valandą ir 196 nes rugsėjo 15 -oji yra 196 -oji metų diena. Čia pateikiamas visų galimų datos išskyrimo funkcijų sąrašas, kiekvienoje iš jų pateikiamas tik vienas argumentas, data išgaunama iš:

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

Pavyzdžiui, jei galbūt norėjote nuskaityti tik tą mėnesį ir metus, kai buvo sukurti visi vartotojai, galite naudoti SQL sakinį, pvz .:

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

Taip būtų atkurti visi įrašai vartotojų lentelę ir parodykite kiekvieno naudotojo sukurtą ID#, mėnesį ir metus.

Įrašų grupavimas pagal datos laikotarpį

Puikus datos funkcijų naudojimas yra galimybė grupuoti įrašus pagal datos laikotarpį naudojant GRUPUOTI PAGAL SQL sakiniuose. Pavyzdžiui, galbūt norite surinkti bendrą visų 2020 m. Užsakymų sumą, sugrupuotą pagal mėnesį. Galite naudoti SQL sakinį, pavyzdžiui:

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

Taip būtų atkurti visi užsakymai, pateikti 2020 metais, sugrupuoti pagal jų sukūrimo mėnesį ir pateikti 12 įrašų, rodančių visą užsakytą sumą kiekvieną metų mėnesį.

Atminkite, kad siekiant geresnio rodyklės našumo, visada geriausia nenaudoti datos funkcijų, tokių kaip YEAR () SQL sakinio WHERE sąlygoje ir naudokite TARP operatorius, kaip parodyta aukščiau pateiktame pavyzdyje.

Daugiau niekada nesupainiokite su datomis

Naudodamiesi pirmiau minėtomis žiniomis, dabar galite efektyviai dirbti, versti ir atlikti operacijas įvairiomis datomis ir laikais.

Nepamirškite visada naudoti UTC, kai dirbate su datomis, kad būtų paprasčiau, ir pasinaudokite aukščiau pateiktais patarimais, kad galėtumėte efektyviai valdyti datas savo programinėje įrangoje, nesvarbu, ar norite atlikti paprastus skaičiavimus, ar lengvai gauti ataskaitas, sugrupuotas pagal datos laikotarpius.

Jei dar nesate susipažinę su SQL, būtinai peržiūrėkite šiuos dalykus esminės SQL komandos siekiant pagerinti jūsų SQL naudojimą.

Dalintis Dalintis „Tweet“ Paštu Kaip sukurti profesionalias ataskaitas ir dokumentus „Microsoft Word“

Šiame vadove nagrinėjami profesionalios ataskaitos elementai ir apžvelgiama jūsų dokumento struktūra, stilius ir užbaigimas naudojant „Microsoft Word“.

Skaityti toliau
Susijusios temos Apie autorių Mattas Dizakas(Paskelbta 18 straipsnių) Daugiau iš Matt Dizak

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia