logo

Funcții MySQL de dată și oră

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 cuDATETIMEdarTIMESTAMPinclude ș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:

acum metoda de ieșire a imaginii' title=

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: 

IEȘIRE2' loading='lazy' title=

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: 

IEȘIRE3' loading='lazy' title=

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
4120Practica26-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
Practica26-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
Practica26

Interogare pentru extragerea anului:

SELECT Name Extract(YEAR FROM BirthTime)  
AS BirthYear FROM Test;

Ieșire: 

Nume Anul Nașterii
Practica1996

Interogare pentru extragerea secundelor:

SELECT Name Extract(SECOND FROM   
BirthTime) AS BirthSecond FROM Test;

Ieșire:

Nume Nașterea a doua
Practica581

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
4120Practica26-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
Practica1997-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ă
Practica1996-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
Practica1996-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 sens

interval - 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.

Creați un test