Перейти к содержимому
Последнее обновление

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

Примечание:

  1. Столбец sec имеет тип Float, поэтому все выходные значения представлены как время с шестью знаками после запятой.
  2. 1 - 2 представляют обычные примеры.
  3. 3 - 4 показывают случаи выхода значения часов за допустимый диапазон (возвращаются фиксированные граничные значения).
  4. 5 - 6 показывают случаи, когда параметры minute и sec превышают верхнюю границу допустимого диапазона (возвращается NULL).
  5. 7 - 9 показывают случаи, когда любой из параметров равен NULL (возвращается NULL).
  6. 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 |
+-----------------------------+