Skip to content

Функции даты и времени ​

Извлечение частей даты, сдвиги и усечение до периода. С их помощью из одного поля с датой получают разрезы вроде года, месяца или дня недели и строят периоды для сравнения.

Примеры считаются на демо-датасете «Продажи»: заказы, товары и покупатели. Разрез — категория товара, если не сказано иное.

Не все функции доезжают до источника

В режиме прямого запроса формула переводится в SQL вашей базы, и часть функций в её диалекте отсутствует. У таких ниже стоит строка «В прямом запросе…» с перечнем баз, на которых расчёт не соберётся. Oracle, Firebird и Trino в этот перечень не входят: на них в прямом запросе не строится большинство виджетов — поддержка функций источниками.

DATEADD ​

DATEADD( date [, unit [, n ] ] )

Сдвигает дату на n единиц; по умолчанию на один день. Смещение — константа.

Пример.

DATEADD([orders.order_date], 'day', -7)

Результат — дата на неделю раньше: 2026-07-24 вместо 2026-07-31.

DATEPART ​

DATEPART( date, unit )

Часть даты по имени единицы — то же, что одноимённая функция: DATEPART(d, 'month') равно MONTH(d).

Пример.

MAX(DATEPART([orders.order_date], 'quarter'))

Номер квартала — 4. Полезна, когда единица приходит параметром и заранее неизвестна.

В прямом запросе не работает на: MS SQL Server.

DATETRUNC ​

DATETRUNC( date, unit )

Округляет дату вниз до единицы: year, quarter, month, day, hour, minute, second.

Пример.

DATETRUNC([orders.order_date], 'month')

Результат — начало месяца заказа — 2026-07-01.

В прямом запросе не работает на: H2, Vertica.

DAY ​

DAY( date )

День месяца.

Пример.

MAX(DAY([orders.order_date]))

Наибольший день месяца среди заказов категории — 31.

В прямом запросе не работает на: MS SQL Server.

DAYOFWEEK ​

DAYOFWEEK( date )

День недели.

Пример.

MAX(DAYOFWEEK([orders.order_date]))

7 — воскресенье: неделя нумеруется с понедельника.

В прямом запросе не работает на: ClickHouse, MySQL, MariaDB, MS SQL Server.

HOUR ​

HOUR( datetime )

Часы.

Нужно поле с временем

На поле типа «дата» без времени функция отвечает 500 Внутренняя ошибка сервера — без пояснения, чего ей не хватило. Проверьте тип поля: часы, минуты и секунды берутся только из «даты и времени».

MINUTE ​

MINUTE( datetime )

Минуты.

Нужно поле с временем

На поле типа «дата» без времени функция отвечает 500 Внутренняя ошибка сервера — без пояснения, чего ей не хватило. Проверьте тип поля: часы, минуты и секунды берутся только из «даты и времени».

MONTH ​

MONTH( date )

Месяц даты (1–12).

Пример.

MAX(MONTH([orders.order_date]))

12 — в категории есть декабрьские заказы. Для разреза по месяцам с сохранением года берите DATETRUNC: MONTH вернёт номер без привязки к году, и декабри разных лет сольются в одну группу.

В прямом запросе не работает на: MS SQL Server.

NOW ​

NOW()

Текущие дата и время.

Пример.

MAX(NOW())

Момент выполнения запроса, например 2026-08-27T14:18:55Z. Значение берётся на стороне платформы, поэтому одинаково для всех строк выборки.

QUARTER ​

QUARTER( date )

Квартал даты (1–4).

Пример.

MAX(QUARTER([orders.order_date]))

4 — есть заказы четвёртого квартала.

В прямом запросе не работает на: MS SQL Server.

SECOND ​

SECOND( datetime )

Секунды.

Нужно поле с временем

На поле типа «дата» без времени функция отвечает 500 Внутренняя ошибка сервера — без пояснения, чего ей не хватило. Проверьте тип поля: часы, минуты и секунды берутся только из «даты и времени».

TODAY ​

TODAY()

Текущая дата.

Пример.

MAX(TODAY())

Сегодняшняя дата с нулевым временем. Основа для относительных периодов — «с начала месяца», «за последние 30 дней».

WEEK ​

WEEK( date )

Номер недели.

Пример.

MAX(WEEK([orders.order_date]))

52 — последняя неделя года.

В прямом запросе не работает на: MS SQL Server.

YEAR ​

YEAR( date )

Год даты.

Пример.

YEAR([orders.order_date])

Результат — 2025 или 2026: демо-данные охватывают июль 2025 — июль 2026.

В прямом запросе не работает на: MS SQL Server.

Что дальше ​