NOW / CURDATE / DATE_FORMAT în MySQL

Funcții Toate versiunile MySQL și MariaDB

Data și ora curentă și formatarea datelor.

Sintaxă
NOW()
CURDATE()
DATE_FORMAT(data, format)

Ce face NOW / CURDATE / DATE_FORMAT

NOW() returnează data și ora curentă (2026-10-19 14:32:07), iar CURDATE() doar data. Cu INTERVAL aduni sau scazi timp: NOW() - INTERVAL 7 DAY.

DATE_FORMAT afișează o dată în formatul dorit. Marcaje uzuale: %d ziua, %m luna, %Y anul, %H:%i ora și minutul.

Ora returnată de NOW() depinde de fusul orar al serverului MySQL, care poate fi diferit de cel al site-ului.

Exemple

Exemplul 1: Data și ora curentă

Rezultatul diferă la fiecare rulare.

SELECT NOW(), CURDATE(), CURDATE() - INTERVAL 7 DAY AS acum_o_saptamana;

Rezultat posibil (diferă la fiecare rulare)

+---------------------+------------+------------------+
| NOW()               | CURDATE()  | acum_o_saptamana |
+---------------------+------------+------------------+
| 2026-10-19 14:32:07 | 2026-10-19 | 2026-10-12       |
+---------------------+------------+------------------+

Exemplul 2: Formatul românesc

SELECT DATE_FORMAT('2026-10-19 14:32:07', '%d.%m.%Y, ora %H:%i') AS data_ro;

Rezultat în MySQL

+-----------------------+
| data_ro               |
+-----------------------+
| 19.10.2026, ora 14:32 |
+-----------------------+

Exemplul 3: Comenzile din ultimele 30 de zile

Folosește tabelul comenzi de la JOIN. Rezultatul depinde de ziua în care rulezi interogarea; aici, 19 octombrie 2026.

SELECT id, data, total FROM comenzi WHERE data >= CURDATE() - INTERVAL 30 DAY;

Rezultat posibil (diferă la fiecare rulare)

+-----+------------+-------+
| id  | data       | total |
+-----+------------+-------+
| 103 | 2026-10-02 |  1200 |
| 104 | 2026-10-11 |    80 |
+-----+------------+-------+

Greșeli frecvente

  • Formatezi datele în SQL și apoi le compari ca text. Compară datele în forma lor originală (AAAA-LL-ZZ) și formatează-le doar pentru afișare.
  • Aplici o funcție pe coloană în WHERE, de exemplu WHERE YEAR(data) = 2026. Indexul de pe data nu mai poate fi folosit. Scrie WHERE data >= '2026-01-01' AND data < '2027-01-01'.

Comenzi înrudite

  • BETWEEN: Verifică dacă o valoare este într-un interval, cu tot cu capete.
  • CREATE TABLE: Creează un tabel nou, cu coloanele și tipurile lor de date.
  • WHERE: Filtrează rândurile: păstrează doar rândurile care îndeplinesc o condiție.