PERIOD_DIFF
Описание
Вычисляет разницу в месяцах между двумя периодами.
Здесь <period> — целое число, в котором последние две цифры обозначают месяц (01-12), а предшествующие цифры — год.
Функция возвращает результат period_1 - period_2 с учётом знака.
Если значение года меньше 100, оно преобразуется в четырёхзначный формат по определённым правилам.
Поведение этой функции соответствует поведению функции PERIOD_DIFF в MySQL.
Синтаксис
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