PERIOD_DIFF
描述
计算两个周期之间的月份差值。
其中 <period> 是一个整数,最后两位表示月份(01-12),前面的数字表示年份。
函数返回period_1 - period_2的绝对结果。
若年份部分小于 100 会按一定规则补为四位数年份格式处理。
该函数与 MySQL 的 PERIOD_DIFF 函数 行为一致。
语法
PERIOD_DIFF(`<period_1>`, `<period_2>`)
参数
| 参数 | 说明 |
|---|---|
<period_1> | 代表一个由年和月组成的周期。
|
<period_2> | 代表另一个周期,格式要求与 <period_1> 相同。 |
返回值
返回一个整型,表示<period_1> 的总月份数减去 <period_2> 的总月份数的值。
当任一参数为 NULL,因数值无法转换为 BIGINT 时,返回 NULL。
当参数为负数或其月份部分无效时,函数将报错。
举例
SELECT `period_1`, `period_2`, PERIOD_DIFF(`period_1`, `period_2`) AS DIFF FROM `test_period_diff`;
+---------------------+----------+---------------------+
| period_1 | period_2 | DIFF |
+---------------------+----------+---------------------+
| 200802 | 200703 | 11 |
| 200703 | 200802 | -11 |
| 7001 | 6912 | -1199 |
| NULL | 2510 | NULL |
| 2510 | NULL | NULL |
| 9223372036854775807 | 101 | 1106804644422549090 |
| 9223372036854775808 | 101 | NULL |
+---------------------+----------+---------------------+
最后一行中period_1超出了BIGINT的上限(2^63-1), 故输出 NULL
SELECT PERIOD_DIFF(1, -1);
-- ERROR 1105 (HY000): errCode = 2, detailMessage = (127.0.0.1)[INVALID_ARGUMENT]Period function got invalid period: -1