SEC_TO_TIME

SEC_TO_TIME(seconds)

Zamienia liczbę sekund na wartość TIME w postaci godziny:minuty:sekundy. Godzin może być więcej niż 23.

Parametry

  • seconds – liczba sekund; może być ujemna.

Przykłady

SELECT SEC_TO_TIME(3725) AS hour_and_2_minutes, SEC_TO_TIME(90000) AS over_a_day, SEC_TO_TIME(-60) AS negative;
+--------------------+------------+-----------+
| hour_and_2_minutes | over_a_day | negative  |
+--------------------+------------+-----------+
| 01:02:05           | 25:00:00   | -00:01:00 |
+--------------------+------------+-----------+

Suma czasów trwania – czasy są zamieniane na sekundy, sumowane i zamieniane z powrotem. Przy czasach zapisanych jako ciągi znaków MariaDB dodaje zerowe mikrosekundy:

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(duration))) AS total
FROM (SELECT '01:45:00' AS duration UNION ALL SELECT '02:30:00' UNION ALL SELECT '00:50:00') x;

Wynik w MariaDB:

+-----------------+
| total           |
+-----------------+
| 05:05:00.000000 |
+-----------------+

Wynik w MySQL 8:

+----------+
| total    |
+----------+
| 05:05:00 |
+----------+

Na co uważać

  • Typ TIME sięga do 838:59:59 – większa liczba sekund zostaje z ostrzeżeniem obcięta do tej granicy.
  • SUM() bezpośrednio na kolumnie TIME nie sumuje czasów prawidłowo (są traktowane jak liczby); zawsze zamieniaj je za pomocą TIME_TO_SEC().

Zobacz też:
TIME_TO_SEC()
TIME_FORMAT()
TIMEDIFF()