최종 수정: 에
PERIOD_ADD
설명
<period>에 <month>개월을 더한 결과를 계산합니다.
<period>는 정수이며, 마지막 두 자리는 월(01-12)을, 그 앞의 숫자는 연도를 나타냅니다.
이 함수는 계산된 기간을 정수(연도 + 월) 형식으로 반환합니다.
연도 부분이 100보다 작으면 특정 규칙에 따라 네 자리 연도 형식으로 처리됩니다. 예를 들어, PERIOD_ADD(2501, 0)의 반환값은 202501이며, 2501이 아닙니다.
이 함수는 MySQL의 PERIOD_ADD 함수와 동일하게 동작합니다.
구문
PERIOD_ADD(`<period>`, `<month>`)
매개변수
| 매개변수 | 설명 |
|---|---|
<period> | 연도와 월로 구성된 기간을 나타냅니다.
|
<month> | <period>에 더할 개월 수입니다. [-2^63, 2^63-1] 범위의 정수 값을 허용합니다. |
반환값
계산된 기간을 YYYYMM 형식의 정수로 반환합니다. 매개변수 설명에서 언급했듯이 연도 부분은 네 자리로 제한되지 않습니다.
매개변수 중 하나라도 NULL이거나 period 매개변수를 BIGINT로 변환할 수 없으면 함수는 NULL을 반환합니다.
period 매개변수가 음수이거나 월 부분이 유효하지 않으면 함수는 오류를 발생시킵니다.
예제
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과 동일합니다.