メインコンテンツまでスキップ
に最終更新

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 |
+-------+--------+---------+-------------------+

注:

  1. sec 列は FLOAT 型なので、出力はすべて小数点以下六桁の時刻値になります。
  2. 1~2 行目は通常の例です。
  3. 3~4 行目は時が範囲を超えた例です(固定の境界値を返します)。
  4. 5~6 行目は分と秒の引数が正の範囲で許容範囲を超えた例です(NULL を返します)。
  5. 7~9 行目は引数のいずれかが NULL の例です(NULL を返します)。
  6. 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 |
+-----------------------------+