DATE_ADD() în MySQL

Calcule cu date MySQL 5.0+

Adaugă un interval (zile, luni, ani, ore etc.) la o dată.

Sintaxă
DATE_ADD(data, INTERVAL valoare unitate)
ADDDATE(data, INTERVAL valoare unitate)
ADDDATE(data, zile)

Ce face DATE_ADD()

DATE_ADD() adună un interval. Unitatea poate fi DAY, WEEK, MONTH, YEAR, HOUR, MINUTE și altele. La adăugarea de luni, dacă ziua nu există în luna nouă, MySQL folosește ultima zi a lunii (31 ianuarie + 1 lună = 28 februarie).

ADDDATE() este sinonim; în plus, acceptă direct un număr de zile ca al doilea parametru. Poți scrie și data + INTERVAL 1 DAY.

Parametri

Parametru Descriere
data Data de pornire.
valoare unitate Intervalul adăugat, ex. INTERVAL 7 DAY. O valoare negativă scade.

Ce returnează

Data nouă.

Exemple

Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.

CREATE TABLE comenzi (
  id INT PRIMARY KEY,
  client VARCHAR(30),
  plasata DATETIME,
  livrata DATETIME
);

INSERT INTO comenzi VALUES
  (101, 'Ana', '2026-09-28 09:15:00', '2026-10-01 14:20:00'),
  (102, 'Bogdan', '2026-10-05 18:40:00', '2026-10-06 10:05:00'),
  (103, 'Cristina', '2026-10-17 22:10:00', NULL),
  (104, 'Dan', '2026-12-30 11:00:00', '2027-01-04 16:30:00');

Exemplul 1: Termene de livrare și garanție

SELECT id, DATE(plasata) AS plasata,
       DATE(DATE_ADD(plasata, INTERVAL 3 DAY)) AS livrare_estimata,
       DATE(DATE_ADD(plasata, INTERVAL 2 YEAR)) AS garantie_pana_la
FROM comenzi
ORDER BY id;

Rezultat

+-----+------------+------------------+------------------+
| id  | plasata    | livrare_estimata | garantie_pana_la |
+-----+------------+------------------+------------------+
| 101 | 2026-09-28 | 2026-10-01       | 2028-09-28       |
| 102 | 2026-10-05 | 2026-10-08       | 2028-10-05       |
| 103 | 2026-10-17 | 2026-10-20       | 2028-10-17       |
| 104 | 2026-12-30 | 2027-01-02       | 2028-12-30       |
+-----+------------+------------------+------------------+

Exemplul 2: Sfârșitul de lună, ADDDATE și operatorul +

SELECT DATE_ADD('2026-01-31', INTERVAL 1 MONTH) AS plus_o_luna,
       ADDDATE('2026-10-19', 10) AS adddate_zile,
       '2026-10-19' + INTERVAL 1 WEEK AS cu_operator;

Rezultat

+-------------+--------------+-------------+
| plus_o_luna | adddate_zile | cu_operator |
+-------------+--------------+-------------+
| 2026-02-28  | 2026-10-29   | 2026-10-26  |
+-------------+--------------+-------------+

Greșeli frecvente

  • Scrii unitatea la plural: INTERVAL 3 DAYS. MySQL acceptă doar forma la singular: DAY, MONTH, YEAR.

Comenzi înrudite

  • DATE_SUB(): Scade un interval dintr-o dată, de exemplu „acum 30 de zile”.
  • TIMESTAMPADD(): Adaugă un număr de unități (minute, zile, luni…) la o dată; alternativă la DATE_ADD.
  • DATEDIFF(): Numărul de zile dintre două date (data1 – data2), ignorând orele.