Когато използвате MySQL, можете да използвате SEC_TO_TIME()
функция за изграждане на време стойност въз основа на даден брой секунди. По принцип предоставяте броя на секундите като аргумент и той ще го преобразува в време стойност.
Ето как работи.
Синтаксис
Синтаксисът е така:
SEC_TO_TIME(seconds)
Където seconds
е броят на секундите, който искате да преобразувате в време стойност.
Пример 1 – Основна употреба
Ето пример за демонстрация.
SELECT SEC_TO_TIME(65);
Резултат:
+-----------------+ | SEC_TO_TIME(65) | +-----------------+ | 00:01:05 | +-----------------+
Пример 2 – По-голяма стойност
Ето пример с малко по-голяма стойност.
SELECT SEC_TO_TIME(6555);
Резултат:
+-------------------+ | SEC_TO_TIME(6555) | +-------------------+ | 01:49:15 | +-------------------+
Ето отново един с още по-голяма стойност.
SELECT SEC_TO_TIME(655555);
Резултат:
+---------------------+ | SEC_TO_TIME(655555) | +---------------------+ | 182:05:55 | +---------------------+
Така че стойността на времето не е ограничена до 24 часа. Това е така, защото не се ограничава само до представяне на времето от деня. Може също да представлява изминало време или времеви интервал между две събития.
Пример 3 – Ограничения на типа данни във времето
time
типът данни е ограничен до диапазон от -838:59:59 до 838:59:59 . Ако резултатът е извън този диапазон, ще получите предупреждение.
SELECT SEC_TO_TIME(6555555);
Резултат:
+----------------------+ | SEC_TO_TIME(6555555) | +----------------------+ | 838:59:59 | +----------------------+ 1 row in set, 1 warning (0.00 sec)
Бъдете внимателни все пак. Показаната времева стойност може да е подвеждаща, тъй като ще спре на 838:59:59 дори и резултатът да е по-голям от това.
Ето още един пример, използващ отново по-голяма стойност.
SELECT SEC_TO_TIME(65555550000);
Резултат:
+--------------------------+ | SEC_TO_TIME(65555550000) | +--------------------------+ | 838:59:59 | +--------------------------+ 1 row in set, 1 warning (0.00 sec)
Забележете, че получаваме същия резултат като в предишния пример, въпреки че аргументът seconds е много по-голям в този.
Пример 4 – Числов контекст
Ето пример за използване на SEC_TO_TIME()
в числов контекст. Правим това, като добавяме стойност (в този случай 0
) към изявлението.
SELECT SEC_TO_TIME(6555), SEC_TO_TIME(6555) + 0;
Резултат:
+-------------------+-----------------------+ | SEC_TO_TIME(6555) | SEC_TO_TIME(6555) + 0 | +-------------------+-----------------------+ | 01:49:15 | 14915 | +-------------------+-----------------------+