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()