Manipulare data si ora datele din MySQL sunt esențiale pentru multe operațiuni de baze de date, mai ales când vine vorba de gestionarea marcajelor de timp, planificarea sarcinilor sau generarea de date bazate pe timp. MySQL oferă o varietate de funcții de dată și oră care ajută utilizatorii să lucreze cu valorile datei să efectueze calcule și să le formateze după cum este necesar.
Aceste funcții permit dezvoltatorilor să efectueze calcule să extragă anumite părți ale unei date sau chiar să formateze rezultatul pentru o mai bună lizibilitate. În acest articol, vom explora cele mai frecvent utilizate funcții de dată MySQL, explicăm sintaxa lor, vom oferi exemple și vă vom prezenta cum să le utilizați eficient
Înțelegerea tipurilor de date MySQL de dată și oră
Când lucrați cu date în MySQL, poate fi dificil pentru începători, mai ales pentru că formatul datei din baza de date trebuie să se potrivească cu formatul datelor de intrare în timpul inserării. În multe cazuri, în loc să folosim doar o dată simplă, este posibil să fie nevoie să stocăm atât o dată, cât și o oră, în funcție de cazul de utilizare. Aici este locul DATETIME şi TIMESTAMP tipurile de date intră în joc.
MySQL oferă următoarele tipuri de date pentru stocarea valorilor de dată și oră:
1. DATA :
- Format :
YYYY-MM-DD - Folosit pentru stocarea doar a datei (anul, luna și ziua) fără nicio componentă de timp.
2. DATETIME :
- Format :
YYYY-MM-DD HH:MM:SS - Stochează atât data, cât și ora, făcându-l util atunci când trebuie să capturați anumite ore împreună cu data.
3. TIMESTAMP :
- Format :
YYYY-MM-DD HH:MM:SS - Similar cu
DATETIMEdarTIMESTAMPinclude și suport pentru fusul orar. Se actualizează automat la marca temporală actuală atunci când o înregistrare este modificată, ceea ce o face ideală pentru urmărirea modificărilor aduse înregistrărilor în timp.
4. AN :
- Format :
YYYYsauYY - Folosit pentru stocarea doar a anului, ceea ce poate fi util pentru aplicațiile în care este necesar doar anul, cum ar fi urmărirea anilor de naștere sau a anilor fiscali.
Funcții MySQL de dată și oră
Acum haideți să ne aprofundăm în funcțiile de dată MySQL pe care le puteți utiliza pentru a manipula și a interoga în mod eficient datele de dată și oră.
1. ACUM() - Obțineți data și ora curente
The ACUM() funcția preia data și ora curente în AAAA-LL-ZZ HH:MI:SS format.
Interogare:
SELECT NOW();
Ieșire:

2. CURDATE() - Obțineți numai data curentă
Dacă avem nevoie doar de data curentă fără porțiunea de timp pe care o putem folosi CURDATE() care returnează data în YYYY-MM-DD format.
Interogare:
comutator c#
SELECT CURDATE();
Ieșire:

3. CURTIME() - Obțineți numai ora curentă
Funcția CURTIME() returnează ora curentă în HH:MI:SS format excluzând data.
Interogare:
SELECT CURTIME();
Ieșire:

4. DATE() - Extrageți partea dată dintr-o valoare DATETIME
TheDATE()funcția extrage doar partea dată din aDATETIMEsauTIMESTAMPvaloare eliminând timpul.
Exemplu: Pentru o masă numită users :
| Id | Nume | Ora Nașterii |
|---|---|---|
| 4120 | Practica | 26-09-1996 16:44:15.581 |
Interogare:
SELECT Name DATE(BirthTime)
AS BirthDate FROM Test;
Ieșire:
cum să centrați o imagine pe css
| Nume | Data de naștere |
|---|---|
| Practica | 26-09-1996 |
5. EXTRACT() - Extrage anumite părți de date
EXTRACT()este folosit pentru a extrage anumite părți ale unei date, cum ar fi ziua, luna sau anul. Această funcție poate fi utilă în special atunci când se analizează sau se compară diferite părți ale unei date. Pot fi luate în considerare mai multe unități, dar numai unele sunt utilizate, cum ar fi MICROSECUNDA AL DOILEA MINUT ORA ZI SĂPTĂMÂNĂ LUNA TRIMESTRE AN etc. Iar „data” este o expresie de dată validă.
Sintaxă:
EXTRACT(unitatea FROM data);
Interogare pentru extragerea zilei:
SELECT Name Extract(DAY FROM
BirthTime) AS BirthDay FROM Test;
Ieșire:
| Nume | Ziua de naștere |
|---|---|
| Practica | 26 |
Interogare pentru extragerea anului:
SELECT Name Extract(YEAR FROM BirthTime)
AS BirthYear FROM Test;
Ieșire:
| Nume | Anul Nașterii |
|---|---|
| Practica | 1996 |
Interogare pentru extragerea secundelor:
SELECT Name Extract(SECOND FROM
BirthTime) AS BirthSecond FROM Test;
Ieșire:
| Nume | Nașterea a doua |
|---|---|
| Practica | 581 |
6. DATE_ADD() - Adăugați intervale la o dată
The DATE_ADD() funcția vă permite să adăugați intervale de timp (de exemplu, zile, luni, ani) la o dată sauDATETIMEvaloare.
Sintaxă:
DATE_ADD(data INTERVAL tip expr);
css pentru împachetare text
Exemplu: Pentru tabelul de mai jos numit „ Test '
| Id | Nume | Ora Nașterii |
|---|---|---|
| 4120 | Practica | 26-09-1996 16:44:15.581 |
Interogați la Adăugați 1 an la o dată
SELECT Name DATE_ADD(BirthTime INTERVAL
1 YEAR) AS BirthTimeModified FROM Test;
Ieșire:
| Nume | BirthTimeModified |
|---|---|
| Practica | 1997-09-26 16:44:15.581 |
Interogare pentru a adăuga 30 de zile la o dată
SELECT Name DATE_ADD(BirthTime
INTERVAL 30 DAY) AS BirthDayModified FROM Test;
Ieșire:
| Nume | Ziua NașteriiModificată |
|---|---|
| Practica | 1996-10-26 16:44:15.581 |
Interogare pentru a adăuga 4 ore la o dată
SELECT Name DATE_ADD(BirthTime INTERVAL
4 HOUR) AS BirthHourModified FROM Test;
Ieșire:
| Nume | Nașterea a doua |
|---|---|
| Practica | 1996-10-26 20:44:15.581 |
7. DATEDIFF() - Găsiți diferența dintre două întâlniri
Această funcție returnează numărul de zile dintre două date.
Sintaxă:
DATEDIFF(intervaldata1 data2);
xd xd sensinterval - minut/oră/lună/an etc
data1 și data2- expresie dată/oră
Interogați la Găsiți diferența dintre două întâlniri
SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;
Ieșire:
| DataDiff |
|---|
8. DATE_FORMAT() - Format Data și Ora
DATE_FORMAT() ne permite să formatăm a DATA DATETIME sau TIMESTAMP valoare într-un format personalizat folosind substituenți.
cum se rulează un script în linux
Sintaxă:
DATE_FORMAT(dataformat);
data este o dată validă, iar formatul specifică formatul de ieșire pentru dată/ora. Formatele care pot fi folosite sunt:
- %a-Nume prescurtat pentru ziua săptămânii (duminică-sâmbăt)
- %b-Numele lunii abreviat (ian-dec)
- %c-lună numerică (0-12)
- %Z-Ziua lunii cu sufixul englezesc (0-1-2-3)
- %d-zile lunii numerice (00-31)
- %e-Ziua lunii numerice (0-31)
- %f-microsecunde (000000-999999)
- %H-Hour (00-23)
- %h-oră (01-12)
- %I-Hour (01-12)
- %i-minute numerice (00-59)
- %j-Ziua anului (001-366)
- %k-oră (0-23)
- %l-oră (1-12)
- Nume %L-lună (ianuarie-decembrie)
- %m-lună numerică (00-12)
- %p-AM sau PM
- %r-Timp 12 ore (hh:mm: ss urmat de AM sau PM)
- %S-Secunde (00-59)
- %s-secunde (00-59)
- %T-Time 24 de ore (hh:mm: ss)
- %U-Week (00-53) unde duminica este prima zi a săptămânii
- %u-Week (00-53) unde luni este prima zi a săptămânii
- %V-Week (01-53) unde duminica este prima zi a săptămânii folosită cu %X
- %v-Week (01-53) unde luni este prima zi a săptămânii utilizată cu %x
- %W-numele zilei săptămânii (duminică-sâmbătă)
- %w-zi a săptămânii (0=duminică 6=sâmbătă)
- %X-An pentru săptămâna în care duminica este prima zi a săptămânii, patru cifre utilizate cu %V
- %x-An pentru săptămâna în care luni este prima zi a săptămânii, patru cifre utilizate cu %v
- %Y-Year numeric patru cifre
- %y-Year numeric două cifre
Interogare pentru a formata o dată
SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;Ieșire:
| Data_formatată |
|---|
| joi, 10 aprilie 2025 |
Cele mai bune practici pentru lucrul cu data și ora în MySQL
1. Utilizați întotdeauna formatele adecvate de dată
Când inserați sau actualizați datele asigurați-vă că urmați formatele așteptate ale MySQL (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). Acest lucru asigură că interogările dvs. returnează rezultatele așteptate fără erori.
2. Considerații privind fusul orar cu TIMESTAMP
în timp ceDATETIMEnu stochează informații despre fusul orarTIMESTAMPface. Dacă aplicația dvs. este sensibilă la fusul orar (de exemplu, în aplicațiile internaționale), luați în considerare utilizareaTIMESTAMPpentru câmpurile dată-oră care trebuie să țină cont de diferite fusuri orare.
3. Gestionarea intervalelor de date în interogări
Pentru filtrarea datelor pe baza intervalelor de date (de exemplu, preluarea tuturor înregistrărilor dintr-o anumită lună sau an), asigurați-vă că utilizați comparații adecvate de date înWHEREclauză. Exemplu:
SELECT * FROM orders
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';
4. Considerații de performanță
Când lucrați cu funcții de dată și oră, în special în seturi de date mari, fiți atenți la impactul asupra performanței. Evitați utilizarea funcțiilor precumNOW()sauCURDATE()înWHEREclauză deoarece pot încetini interogările atunci când se ocupă cu tabele mari.
Concluzie
Funcțiile de dată și oră ale MySQL sunt instrumente esenţiale pentru manipulare şi manipuland date temporale din bazele de date. Prin stăpânirea funcțiilor precumNOW() CURDATE() DATE_ADD() DATEDIFF()şiDATE_FORMAT()cu care poți lucra cu ușurință calcule bazate pe timp comparatii şi formate . Cheia pentru utilizarea eficientă a acestor funcții este să înțelegeți sintaxa lor când și cum să le folosiți și implicațiile lor de performanță în seturi de date mari. Cu aceste cunoștințe, veți putea crea interogări mai eficiente, precise și scalabile pentru toate nevoile dvs. legate de dată și oră în MySQL.