FROM_DAYS
Описание
Функция FROM_DAYS используется для преобразования целого числа дней в соответствующую дату (тип DATE). Эта функция использует «1 января 1 года» в качестве точки отсчёта (т. е. день 0 соответствует 0000-01-01) и вычисляет дату, отстоящую от исходной даты на указанное число дней.
Примечание: для согласованности поведения с MySQL функция FROM_DAYS не поддерживает «29 февраля 1 года» (0000-02-29). Хотя теоретически этот год соответствует правилам високосного года, эта дата автоматически пропускается. Ограничение для исторических дат: функция выполняет вычисления на основе пролептического григорианского календаря и не подходит для дат до введения григорианского календаря в 1582 году (когда фактически использовался юлианский календарь), поэтому результаты могут отличаться от реальных исторических дат.
Эта функция ведёт себя так же, как функция from_days в MySQL
Синтаксис
FROM_DAYS(<days>)
Параметры
| Параметр | Описание |
|---|---|
<days> | Входное число дней типа INT |
Возвращаемое значение
Возвращает значение типа DATE в формате YYYY-MM-DD, представляющее дату через days дней после исходной даты (0000-01-01). Если значение days отрицательное, возвращает NULL. Если значение days выходит за допустимый диапазон дат (обычно от 1 до 3652424, что соответствует примерно 10000 году), возвращает ошибку.
Примеры
-- Calculate days from the reference date
select from_days(730669),from_days(5),from_days(59), from_days(60);
+-------------------+--------------+---------------+---------------+
| from_days(730669) | from_days(5) | from_days(59) | from_days(60) |
+-------------------+--------------+---------------+---------------+
| 2000-07-03 | 0000-01-05 | 0000-02-28 | 0000-03-01 |
+-------------------+--------------+---------------+---------------+
-- If the input parameter is negative, an error is returned
select from_days(-60);
ERROR 1105 (HY000): errCode = 2, detailMessage = (10.16.10.3)[E-218]Operation from_days of -60 out of range
-- If the input is NULL, returns NULL
select from_days(NULL);
+-----------------+
| from_days(NULL) |
+-----------------+
| NULL |
+-----------------+
-- If days exceeds the valid date range (typically 1 to 3652424, corresponding to approximately year 10000), an error is returned
select from_days(99999999);
ERROR 1105 (HY000): errCode = 2, detailMessage = (10.16.10.3)[E-218]Operation from_days of 99999999 out of range