TIMESTAMPDIFF() în MySQL

Calcule cu date MySQL 5.0+

Diferența dintre două momente în unitatea aleasă: secunde, minute, ore, zile, luni, ani.

Sintaxă
TIMESTAMPDIFF(unitate, inceput, sfarsit)

Ce face TIMESTAMPDIFF()

TIMESTAMPDIFF() este funcția cea mai flexibilă pentru diferențe. Ordinea este început, sfârșit (inversă față de DATEDIFF()). Rezultatul este un număr întreg, rotunjit în jos.

Este metoda corectă pentru calculul vârstei: TIMESTAMPDIFF(YEAR, data_nasterii, CURDATE()).

Parametri

Parametru Descriere
unitate MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR.
inceput Momentul de început.
sfarsit Momentul de final.

Ce returnează

Un 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: Vârsta la o dată anume

CREATE TABLE persoane (nume VARCHAR(20), nascut DATE);
INSERT INTO persoane VALUES ('Ana', '1995-03-12'), ('Mihai', '2008-10-20');

SELECT nume, TIMESTAMPDIFF(YEAR, nascut, '2026-10-19') AS varsta FROM persoane;

Rezultat

+-------+--------+
| nume  | varsta |
+-------+--------+
| Ana   |     31 |
| Mihai |     17 |
+-------+--------+

Exemplul 2: Durata livrării în ore

SELECT id, TIMESTAMPDIFF(HOUR, plasata, livrata) AS ore
FROM comenzi
WHERE livrata IS NOT NULL
ORDER BY id;

Rezultat

+-----+------+
| id  | ore  |
+-----+------+
| 101 |   77 |
| 102 |   15 |
| 104 |  125 |
+-----+------+

Greșeli frecvente

  • Calculezi vârsta cu DATEDIFF(...)/365. Anii bisecți dau erori în preajma zilei de naștere. TIMESTAMPDIFF(YEAR, ...) este exact.

Comenzi înrudite

  • DATEDIFF(): Numărul de zile dintre două date (data1 – data2), ignorând orele.
  • TIMESTAMPADD(): Adaugă un număr de unități (minute, zile, luni…) la o dată; alternativă la DATE_ADD.
  • TIMEDIFF(): Diferența dintre două ore sau date-ore, ca durată HH:MM:SS.