メインコンテンツまでスキップ
バージョン: 26.x

MAKETIME

説明

hourminutesecond引数から構成された時刻値を返します。

この関数は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 |
+------+-------+--------+---------+-------------------+

注意:

  1. sec列タイプはFloatのため、すべての出力フォーマットは小数点以下6桁の時間値になります。
  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 |
+-----------------------------+