DATEDIFF() în MySQL

Calcule cu date MySQL 5.0+

Numărul de zile dintre două date (data1 - data2), ignorând orele.

Sintaxă
DATEDIFF(data1, data2)

Ce face DATEDIFF()

DATEDIFF() scade a doua dată din prima și returnează diferența în zile. Partea de oră este ignorată. Rezultatul este negativ dacă prima dată este mai veche.

Pentru alte unități (ore, luni, ani) folosește TIMESTAMPDIFF().

Parametri

Parametru Descriere
data1 Data de la care se scade.
data2 Data scăzută.

Ce returnează

Numărul de zile, ca număr întreg.

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: Câte zile până la Crăciun

SELECT DATEDIFF('2026-12-25', '2026-10-19') AS zile;

Rezultat

+------+
| zile |
+------+
|   67 |
+------+

Exemplul 2: Durata livrării în zile

SELECT id, client, DATEDIFF(livrata, plasata) AS zile_livrare
FROM comenzi
WHERE livrata IS NOT NULL
ORDER BY id;

Rezultat

+-----+--------+--------------+
| id  | client | zile_livrare |
+-----+--------+--------------+
| 101 | Ana    |            3 |
| 102 | Bogdan |            1 |
| 104 | Dan    |            5 |
+-----+--------+--------------+

Greșeli frecvente

  • Te aștepți ca DATEDIFF() să țină cont de ore. O comandă plasată seara și livrată dimineața, a doua zi, are diferența 1, deși au trecut doar câteva ore.

Comenzi înrudite

  • TIMESTAMPDIFF(): Diferența dintre două momente în unitatea aleasă: secunde, minute, ore, zile, luni, ani.
  • TIMEDIFF(): Diferența dintre două ore sau date-ore, ca durată HH:MM:SS.
  • DATE_ADD(): Adaugă un interval (zile, luni, ani, ore etc.) la o dată.