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