Cum să lucrați eficient cu datele și orele din MySQL

Cum să lucrați eficient cu datele și orele din MySQL

Datele și orele sunt importante, ajută la menținerea organizării lucrurilor și sunt un aspect integral al oricărei operațiuni software.





Lucrul eficient cu aceștia în baza de date poate părea uneori confuz, indiferent dacă funcționează în diferite fusuri orare, adăugând / scăzând date și alte operații.





Aflați diferitele funcții MySQL disponibile pentru a gestiona și gestiona cu ușurință datele / orele din baza de date.





Lucrul cu zonele orare

Pentru a menține lucrurile standardizate, ar trebui să lucrați întotdeauna doar cu date / ore în fusul orar UTC. De fiecare dată când stabiliți o conexiune la baza de date MySQL, ar trebui să comutați fusul orar la UTC, ceea ce se poate face cu următoarea instrucțiune SQL:

SET TIME_ZONE = '+0:00'

Deoarece toate datele vor fi acum salvate în UTC, știți întotdeauna cu ce lucrați, făcând lucrurile mai simpliste și mai simple.



copierea muzicii de pe iPod pe iTunes

Când este necesar, puteți cu ușurință converti fusul orar a oricărei valori datetime / timestamp cu handy CONVERT_TZ () Funcția MySQL. Mai întâi trebuie să cunoașteți compensarea, de exemplu, PST pe coasta de vest a Americii de Nord este UTC -08: 00, deci puteți utiliza:

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

Acest lucru are ca rezultat 2021-02-04 13:47:23 ceea ce este exact corect. Cele trei argumente au trecut la CONVERT_TZ () sunt mai întâi data / ora cu care începeți (utilizați acum () pentru ora curentă), a doua va fi întotdeauna „+0: 00” deoarece toate datele sunt forțate să UTC în baza de date, iar ultima este compensarea pe care dorim să o convertim la.





Adăugare / scădere date

De multe ori trebuie să adăugați sau să scăpați de la date, cum ar fi dacă trebuie să preluați înregistrări de acum o săptămână sau să programați ceva o lună de acum înainte.

Din fericire, MySQL are excelentul DATE_ADD () și DATE_SUB() funcții care fac această sarcină extrem de ușoară. De exemplu, puteți scădea două săptămâni din data curentă cu instrucțiunea SQL:





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

Dacă, în schimb, ați dori să adăugați trei zile la un timestamp existent, ați folosi:

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

Ambele funcții funcționează la fel, primul argument este marca de timp cu care începeți, iar al doilea argument este intervalul de adunare sau scădere. Al doilea argument este întotdeauna formatat la fel începând cu cuvântul interval urmat de o valoare numerică și de intervalul în sine, care poate fi oricare dintre următoarele: al doilea, minutul, ora, ziua, săptămâna, luna, trimestrul, anul.

Pentru un alt exemplu, dacă doriți să recuperați toate datele de conectare care au avut loc în ultimele 34 de minute, puteți utiliza o instrucțiune SQL, cum ar fi:

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

După cum puteți vedea, acest lucru va prelua toate înregistrările din conectări tabel cu o dată de conectare mai mare decât ora curentă minus 45 de minute sau, cu alte cuvinte, ultimele 45 de minute.

Obțineți diferența între date

Uneori trebuie să obțineți cât timp a trecut între două date. Puteți obține cu ușurință numărul de zile între două date diferite cu ajutorul DATEDIFF funcție, cum ar fi instrucțiunea SQL de mai jos:

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

The DATEDIFF funcția ia două argumente, ambele fiind ștampile de dată / oră și indică numărul de zile dintre ele. Exemplul de mai sus va arăta numărul de zile trecute de la 15 decembrie 2020 până astăzi.

Pentru a obține numărul de secunde între două date, TO_SECONDS () funcția poate fi utilă, de exemplu:

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

Acest lucru va duce la numărul de secunde dintre cele două date furnizate.

Extrageți segmente din date

Există diferite funcții MySQL care vă permit să extrageți cu ușurință anumite segmente din date, cum ar fi dacă doriți doar luna, ziua anului sau ora. Iată câteva exemple de astfel de funcții:

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

Instrucțiunile SQL de mai sus ar avea ca rezultat 02 , ora curentă și 196 întrucât 15 septembrie este a 196-a zi a anului. Iată o listă cu toate funcțiile de extragere a datelor disponibile, fiecare având doar un argument, data fiind extrasă din:

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

De exemplu, dacă poate doriți doar să recuperați luna și anul în care toți utilizatorii au fost creați, puteți utiliza o instrucțiune SQL, cum ar fi:

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

Aceasta ar prelua toate înregistrările din utilizatori tabel și afișați numărul de identificare, luna și anul în care a fost creat fiecare utilizator.

Gruparea înregistrărilor după dată Perioada

O utilizare excelentă a funcțiilor de dată este abilitatea de a grupa înregistrările în funcție de perioada de dată folosind A SE GRUPA CU în cadrul declarațiilor dvs. SQL. De exemplu, poate doriți să extrageți suma totală a tuturor comenzilor în 2020 grupate în funcție de lună. Puteți utiliza o instrucțiune SQL, cum ar fi:

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

Aceasta va prelua toate comenzile plasate în anul 2020, le va grupa în funcție de luna în care au fost create și ar returna 12 înregistrări care arată suma totală comandată în fiecare lună a anului.

Vă rugăm să rețineți, pentru o performanță mai bună a indexului, este întotdeauna mai bine să evitați utilizarea funcțiilor de dată, cum ar fi AN() în cadrul clauzei WHERE a instrucțiunilor SQL și, în schimb, utilizați ÎNTRE operator așa cum se arată în exemplul de mai sus.

Nu vă mai confunda niciodată cu datele

Folosind cunoștințele de mai sus puteți lucra acum eficient, traduce și efectua operațiuni în date și ore într-o gamă largă de cazuri de utilizare.

Nu uitați să utilizați întotdeauna UTC atunci când lucrați cu date pentru simplitate și utilizați sfaturile de mai sus pentru a gestiona eficient datele din software-ul dvs., fie că este vorba de a completa calcule simple sau de a extrage cu ușurință rapoarte grupate pe perioade de date.

Dacă sunteți oarecum nou în SQL, asigurați-vă că le verificați comenzi SQL esențiale pentru a vă ajuta să vă îmbunătățiți utilizarea SQL.

Acțiune Acțiune Tweet E-mail Cum se creează rapoarte și documente profesionale în Microsoft Word

Acest ghid examinează elementele unui raport profesional și analizează structurarea, stilarea și finalizarea documentului dvs. în Microsoft Word.

Citiți în continuare
Subiecte asemănătoare Despre autor Matt Dizak(18 articole publicate) Mai multe de la Matt Dizak

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona