Функции даты и времени
Все функции дат работают со строками-датами в ISO-формате: YYYY-MM-DD для дат, YYYY-MM-DDTHH:MM:SS для дат+время. На вход также принимается русский формат (ДД.ММ.ГГГГ и т. п.) — система пытается распарсить.
today() / now()
today()— сегодняшняя дата.now()— сегодня + текущее время.
today() // "2026-05-11"date_diff(today(), purchase_date, 'days') // дней с покупкиdate(year, month, day)
Конструктор даты. Месяц 1-based (январь = 1).
date(2026, 1, 1) // "2026-01-01"date(year_of(today()), 12, 31) // последний день текущего годаdate_diff(a, b, unit)
Разница b − a в указанной единице.
'days'— целое число дней.'months'— целое число месяцев (по календарю).'years'— целое число лет.
date_diff(purchase_date, today(), 'days')date_diff(purchase_date, today(), 'months')date_diff(birth_date, today(), 'years') // возрастРезультат может быть отрицательным, если a позже b.
add_days(d, n), add_months(d, n), add_years(d, n)
Сдвиг даты на N единиц.
add_days(today(), 30) // через 30 днейadd_months(purchase_date, 12) // ровно через годadd_years(birth_date, 18) // дата совершеннолетияdate_part(d, unit)
Извлечь компонент даты как число.
'year'— год (4 цифры).'month'— месяц (1–12).'day'— день месяца (1–31).'dayofweek'— день недели по ISO: 1 = понедельник, 7 = воскресенье.'hour','minute'— для дат с временем.
date_part(payment_date, 'month') // → 5date_part(payment_date, 'dayofweek') // → 6 (суббота)Шорткаты: year_of, month_of, day_of
Сокращения для самых частых вызовов date_part:
year_of(payment_date) // = date_part(payment_date, 'year')month_of(payment_date) // = date_part(payment_date, 'month')day_of(payment_date) // = date_part(payment_date, 'day')month_start(d), year_start(d)
Первое число месяца / года, в котором лежит дата.
month_start(today()) // "2026-05-01"year_start(today()) // "2026-01-01"Удобно для группировок по месяцу.
is_weekend(d)
true для субботы/воскресенья.
is_weekend(payment_date)if(is_weekend(payment_date), "Выходной", "Будний день")Граничные случаи
- Невалидная дата на входе → результат
null. - Пустое значение →
null. - Сравнение дат через
<,>работает, но обрабатывается через числовое преобразование строки — надёжнее использоватьdate_diff.
⚠️ Уточнить: поведение функций при разных таймзонах (например,
add_daysчерез DST-переход) детально не оттестировано в коде. Для большинства бытовых задач погрешность 0, но если вам нужны минутные точности — проверяйте на тестовых данных.
Частые ошибки
- Передают строку в произвольном формате. Берёт ISO или русский (
ДД.ММ.ГГГГ). Слово «вчера», «завтра» не работает. - Сравнивают дату с числом. Не сработает — приводите через
date_diff. - Ожидают, что
month_of(today()) == 5сработает для строкового «май». Эта функция возвращает число 5, а не строку.