본문으로 건너뛰기
최종 수정: 에

MAKETIME

설명​

hour, minute, second 인수로 구성된 시간 값을 반환합니다.

이 함수는 MySQL의 MAKETIME 함수와 동일하게 동작합니다.

구문​

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는 hour 값이 범위를 초과하는 예제입니다(고정된 경곗값 반환).
  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 |
+-----------------------------+