に最終更新
MAKETIME
説明
hour、minute、second の引数から構成される時刻値を返します。
この関数は、MySQL の MAKETIME 関数と同じように動作します。
構文
MAKETIME(`<hour>`, `<minute>`, `<second>`)
パラメータ
| パラメータ | 説明 |
|---|---|
hour | 時刻の時の部分。整数型(BIGINT)をサポートします。値の範囲は [-838, 838] に制限されます。入力値がこの範囲を超えた場合、近い方の境界値に自動的に補正されます。 |
minute | 時刻の分の部分。整数型(BIGINT)をサポートします。許容範囲は [0, 59] です。 |
second | 時刻の秒の部分。整数型(BIGINT)と浮動小数点型(DOUBLE)をサポートします。許容範囲は [0, 60) です。小数点以下六桁までの精度をサポートします。小数点以下が六桁を超える場合は、自動的に丸められます。 |
戻り値
hour:minute:second 形式の TIME 型の値を返します。入力の 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 行目は分と秒の引数が正の範囲で許容範囲を超えた例です(NULL を返します)。
- 7~9 行目は引数のいずれかが NULL の例です(NULL を返します)。
- 10~11 行目は分と秒が負の値の例です(絶対値が許容範囲内でも 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 |
+-----------------------------+