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.

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ă știți offset-ul, de exemplu, PST pe coasta de vest a Americii de Nord este UTC -08: 00, deci puteți utiliza:

instagram viewer

PolyTime este cea mai bună aplicație de conversie a fusului orar pentru mai multe orașe simultan

PolyTime, o nouă aplicație de la MakeUseOf, facilitează compararea fusurilor orare din întreaga lume. Iată ce puteți face cu acesta și cum funcționează.

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ăugați / scadeți datele

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

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 (acum (), interval 2 săptămâni);

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

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 (acum (), '2020-12-15');

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ă ați dori doar luna, ziua anului sau ora. Iată câteva exemple de astfel de funcții:

SELECTAȚI LUNA ('2021-02-11 15:27:52');
SELECȚIA ORA (acum ());
SELECTAȚI DAYOFYEAR ('2021-07-15 12:00:00');

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

- AL DOILEA()
- MINUT()
- ORA()
- ZI ()
- SĂPTĂMÂNĂ () - Numărul 0 - 52 care definește săptămâna în cursul anului.
- LUNA ()
- TRIMESTRE () - Numărul 1 - 4 care definește trimestrul anului.
- AN ()
- DAYOFYEAR () - Ziua anului (de ex. 15 septembrie = 196).
- LAST_DAY () - Ultima zi din luna dată.
- DATE () - Data în format AAAA-LL-ZZ fără oră.
- TIME () Ora în HH: II: format SS fără dată.
- TO_DAYS () - Numărul de zile de la 0 A.D.
- TO_SECONDS () - Numărul de secunde de la 0 A.D.
- UNIX_TIMESTAMP () - Numărul de secunde de la epocă (1 ianuarie 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 utilizatori;

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:

SELECTAȚI LUNA (creat_at), SUMĂ (sumă) DIN comenzile UNDE create_at ÎNTRE '01-01-2020 00:00:00' ȘI '2020-12-31 23:59:59' GRUPAȚI ÎN LUNĂ (creat_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ă folosiți întotdeauna UTC când lucrați cu date pentru simplitate și să 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 după dată perioade.

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.

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.

Subiecte asemănătoare
  • Nespecificat
Despre autor
Matt Dizak (16 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!

Încă un pas…!

Vă rugăm să confirmați adresa de e-mail în e-mailul pe care tocmai vi l-am trimis.

.