TIMEDIFF() în MySQL

Calcule cu date MySQL 5.0+

Diferența dintre două ore sau date-ore, ca durată HH:MM:SS.

Sintaxă
TIMEDIFF(expresie1, expresie2)

Ce face TIMEDIFF()

TIMEDIFF() returnează diferența ca valoare TIME. Ambele argumente trebuie să fie de același tip (ambele ore sau ambele date-ore).

Valoarea maximă a tipului TIME este 838:59:59, adică aproximativ 35 de zile.

Parametri

Parametru Descriere
expresie1 Momentul de final.
expresie2 Momentul de început.

Ce returnează

Durata, de tip TIME.

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: Ore lucrate

SELECT TIMEDIFF('18:00:00', '09:30:00') AS ore_lucrate;

Rezultat

+-------------+
| ore_lucrate |
+-------------+
| 08:30:00    |
+-------------+

Exemplul 2: Timpul de livrare

SELECT id, TIMEDIFF(livrata, plasata) AS durata
FROM comenzi
WHERE livrata IS NOT NULL
ORDER BY id;

Rezultat

+-----+-----------+
| id  | durata    |
+-----+-----------+
| 101 | 77:05:00  |
| 102 | 15:25:00  |
| 104 | 125:30:00 |
+-----+-----------+

Greșeli frecvente

  • Amesteci o oră cu o dată-oră: TIMEDIFF('2026-10-19 10:00:00', '09:00:00') returnează NULL. Folosește același tip în ambele argumente.

Comenzi înrudite

  • TIMESTAMPDIFF(): Diferența dintre două momente în unitatea aleasă: secunde, minute, ore, zile, luni, ani.
  • DATEDIFF(): Numărul de zile dintre două date (data1 – data2), ignorând orele.