MAKETIME
描述
返回根据hour, minute, second组合出的时间值
该函数与 mysql 中的 makedate 函数 行为一致。
语法
MAKETIME(`<hour>`, `<minute>`, `<second>`)
参数
| 参数 | 说明 |
|---|---|
hour | 时间的小时部分,支持整数类型(BIGINT)。取值范围被限制在 [-838, 838], 若输入值超过该范围,则自动修正为最接近的边界值。 |
minute | 时间的分钟部分,支持整数类型(BITINT)。允许的取值范围为 [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`;
+------+-------+--------+---------+-------------------+
| id | hour | minute | sec | ans |
+------+-------+--------+---------+-------------------+
| 1 | 12 | 15 | 30 | 12:15:30.000000 |
| 2 | 14 | 56 | 12.5789 | 14:56:12.578900 |
| 3 | 1234 | 11 | 4 | 838:59:59.000000 |
| 4 | -1234 | 6 | 52 | -838:59:59.000000 |
| 5 | 20 | 60 | 12 | NULL |
| 6 | 14 | 51 | 66 | NULL |
| 7 | NULL | 15 | 16 | NULL |
| 8 | 7 | NULL | 8 | NULL |
| 9 | 1 | 2 | NULL | NULL |
| 10 | 23 | -40 | 12 | NULL |
| 11 | 20 | 6 | -12 | NULL |
+------+-------+--------+---------+-------------------+
注:
sec列类型为 Float,所以输出格式全部为六位精度的时间值- 1 - 2 为正常样例。
- 3 - 4 为 hour 越界情况样例(返回固定边界值)。
- 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的输入类型为正数类型,故输出类型均为不带微秒的时间类型
-- second的精度超过六位会四舍五入取六位精度
SELECT MAKETIME(12, 7, 56.1234567);
+-----------------------------+
| MAKETIME(12, 7, 56.1234567) |
+-----------------------------+
| 12:07:56.123457 |
+-----------------------------+