MAKETIME
説明
hour、minute、second引数から構成された時刻値を返します。
この関数はMySQLのMAKETIME functionと一貫した動作をします。
構文
MAKETIME(`<hour>`, `<minute>`, `<second>`)
パラメータ
| Parameter | デスクリプション |
|---|---|
hour | 時刻の時間部分で、整数型(BIGINT)をサポートします。値の範囲は[-838, 838]に制限されています。入力値がこの範囲を超える場合、最も近い境界値に自動的に修正されます。 |
minute | 時刻の分部分で、整数型(BIGINT)をサポートします。許可される値の範囲は[0, 59]です。 |
second | 時刻の秒部分で、整数型(BIGINT)と浮動小数点型(DOUBLE)をサポートします。許可される値の範囲は[0, 60)です。最大6桁の小数点以下の精度をサポートします。6桁を超える小数点以下が提供された場合、自動的に丸められます。 |
Return Value
hour:minute:secondの形式で、TIME型の値を返します。入力のsecondeが整数型の場合、出力値の精度は0となり、小数型の場合、出力値の精度は最大精度の6となります。
minuteまたはsecondが許可された範囲を超える場合、NULLを返します。- いずれかのパラメータがNULLの場合、NULLを返します。
Example
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のため、すべての出力フォーマットは小数点以下6桁の時間値になります。- 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 |
+-----------------------------+