Последнее обновление
MAKETIME
Описание
Возвращает значение времени, сформированное из аргументов hour, minute и second.
Поведение этой функции соответствует поведению функции MAKETIME в MySQL.
Синтаксис
MAKETIME(`<hour>`, `<minute>`, `<second>`)
Параметры
| Параметр | Описание |
|---|---|
hour | Часовая часть времени. Поддерживает целочисленный тип (BIGINT). Диапазон значений ограничен [-838, 838]. Если входное значение выходит за этот диапазон, оно автоматически заменяется ближайшим граничным значением. |
minute | Минутная часть времени. Поддерживает целочисленный тип (BIGINT). Допустимый диапазон значений: [0, 59]. |
second | Секундная часть времени. Поддерживает целочисленный тип (BIGINT) и тип с плавающей точкой (DOUBLE). Допустимый диапазон значений: [0, 60). Поддерживает точность до шести знаков после запятой. Если указано больше шести знаков после запятой, значение автоматически округляется. |
Возвращаемое значение
Возвращает значение типа TIME в формате hour:minute:second. Если входной аргумент seconde имеет целочисленный тип, точность выходного значения равна 0, а если десятичный тип, точность выходного значения равна максимальной точности 6.
- Если
minuteилиsecondвыходит за допустимый диапазон, возвращается NULL. - Если любой из параметров равен NULL, возвращается NULL.
Пример
SELECT `hour`, `minute`, `sec`, MAKETIME(`hour`, `minute`, `sec`) AS ans FROM `test_maketime`;
+-------+--------+---------+-------------------+
| hour | minute | sec | ans |
+-------+--------+---------+-------------------+
| 12 | 15 | 30 | 12:15:30.000000 |
| 14 | 56 | 12.5789 | 14:56:12.578900 |
| 1234 | 11 | 4 | 838:59:59.000000 |
| -1234 | 6 | 52 | -838:59:59.000000 |
| 20 | 60 | 12 | NULL |
| 14 | 51 | 66 | NULL |
| NULL | 15 | 16 | NULL |
| 7 | NULL | 8 | NULL |
| 1 | 2 | NULL | NULL |
| 23 | -40 | 12 | NULL |
| 20 | 6 | -12 | NULL |
+-------+--------+---------+-------------------+
Примечание:
- Столбец
secимеет тип Float, поэтому все выходные значения представлены как время с шестью знаками после запятой.- 1 - 2 представляют обычные примеры.
- 3 - 4 показывают случаи выхода значения часов за допустимый диапазон (возвращаются фиксированные граничные значения).
- 5 - 6 показывают случаи, когда параметры minute и sec превышают верхнюю границу допустимого диапазона (возвращается NULL).
- 7 - 9 показывают случаи, когда любой из параметров равен NULL (возвращается NULL).
- 10 - 11 показывают случаи, когда minute и sec отрицательны (даже если их абсолютные значения находятся в допустимом диапазоне, возвращается NULL).
SELECT `id`, `hour`, `minute`, MAKETIME(`hour`, `minute`, 27) AS ans FROM `test_maketime`;
+------+-------+--------+------------+
| id | hour | minute | ans |
+------+-------+--------+------------+
| 1 | 12 | 15 | 12:15:27 |
| 2 | 14 | 56 | 14:56:27 |
| 3 | 1234 | 11 | 838:59:59 |
| 4 | -1234 | 6 | -838:59:59 |
| 5 | 20 | 60 | NULL |
| 6 | 14 | 51 | 14:51:27 |
| 7 | NULL | 15 | NULL |
| 8 | 7 | NULL | NULL |
| 9 | 1 | 2 | 01:02:27 |
| 10 | 23 | -40 | NULL |
| 11 | 20 | 6 | 20:06:27 |
+------+-------+--------+------------+
Примечание: Входной аргумент
secимеет целочисленный тип, поэтому все выходные значения представляют время без микросекунд.
-- the precision of second will be rounded to six decimal places if it exceeds six digits
SELECT MAKETIME(12, 7, 56.1234567);
+-----------------------------+
| MAKETIME(12, 7, 56.1234567) |
+-----------------------------+
| 12:07:56.123457 |
+-----------------------------+