SEC_TO_TIME

SEC_TO_TIME(seconds)

Wandelt eine Anzahl Sekunden in einen TIME-Wert der Form Stunden:Minuten:Sekunden um. Die Stunden können mehr als 23 sein.

Parameter

  • seconds – die Anzahl Sekunden; sie kann negativ sein.

Beispiele

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 |
+--------------------+------------+-----------+

Eine Summe von Zeitdauern – die Zeiten werden in Sekunden umgewandelt, addiert und zurück umgewandelt. Bei Zeiten als Zeichenketten fügt MariaDB null Mikrosekunden hinzu:

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;

Ergebnis in MariaDB:

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

Ergebnis in MySQL 8:

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

Worauf Sie achten sollten

  • Der Typ TIME reicht bis 838:59:59 – eine größere Anzahl Sekunden wird mit einer Warnung auf diese Grenze gekürzt.
  • SUM() direkt auf einer TIME-Spalte addiert Zeiten nicht richtig (sie werden als Zahlen genommen); wandeln Sie sie immer mit TIME_TO_SEC() um.

Siehe auch:
TIME_TO_SEC()
TIME_FORMAT()
TIMEDIFF()