PERIOD_ADD
説明
<period>に<month>ヶ月を加算した結果を計算します。
<period>は整数で、下2桁が月(01-12)を表し、それより上の桁が年を表します。
この関数は計算された期間を整数形式(年 + 月)で返します。
年の部分が100未満の場合、特定のルールに従って4桁の年形式に処理されます。 例:PERIOD_ADD(2501, 0)は2501ではなく202501を返します。
この関数はMySQLのPERIOD_ADD functionと一貫した動作をします。
構文
PERIOD_ADD(`<period>`, `month`)
パラメータ
| Parameter | デスクリプション |
|---|---|
<period> | 年と月で構成される期間を表します。
|
<month> | <period>に追加する月数。[-2^63, 2^63-1]の範囲の整数値を受け入れます。 |
Return Value
YYYYMMフォーマットで計算された期間を表す整数を返します。パラメータの説明で述べたように、年の部分は4桁に制限されません。
いずれかのパラメータがNULLの場合、またはperiodパラメータがBIGINTに変換できない場合、関数はNULLを返します。
periodパラメータが負の値である場合、または月の部分が無効な場合、関数はエラーをスローします。
Examples
SELECT `period`, `month`, PERIOD_ADD(`period`, `month`) AS ans FROM test_period_add;
+----------+--------+----------+
| period | month | ans |
+----------+--------+----------+
| 200803 | 2 | 200805 |
| 200809 | 5 | 200902 |
| 803 | 2 | 200805 |
| 6910 | 3 | 207001 |
| 7001 | 1 | 197002 |
| 12345611 | 123456 | 13374411 |
| NULL | 10 | NULL |
| 202510 | NULL | NULL |
+----------+--------+----------+
-- Month part exceeds the range [1, 12]
SELECT PERIOD_ADD(202513, 1);
-- ERROR 1105 (HY000): errCode = 2, detailMessage = (127.0.0.1)[INVALID_ARGUMENT]Period function got invalid period: 202513
-- Period exceeds BIGINT range
SELECT PERIOD_ADD(-1, 1);
-- ERROR 1105 (HY000): errCode = 2, detailMessage = (127.0.0.1)[INVALID_ARGUMENT]Period function got invalid period: -1
SELECT PERIOD_ADD(9223372036854775807, 1);
+------------------------------------+
| PERIOD_ADD(9223372036854775807, 1) |
+------------------------------------+
| -9223372036854775808 |
+------------------------------------+
説明: Dorisは内部計算にint64_tを使用するため、オーバーフローが発生する可能性があります。この動作はMySQLと一致しています。