Перейти к содержанию

DatetimeAdd

datetimeAdd принимает значение даты и времени и добавляет к нему некоторую единицу времени. Эта функция полезна при работе с данными временны́х рядов, помеченными «началом» и «концом», например с данными о сеансах или подписках.

Синтаксис Пример
datetimeAdd(столбец, значение, единица) datetimeAdd("2025-03-25", 1, "month")
Принимает значение метки времени или даты и добавляет к нему указанное количество единиц времени. 2025-04-25

Параметры

столбец может быть любым из:

  • название столбца, содержащего метки даты или времени;
  • пользовательское выражение, которое возвращает datetime;
  • строка в формате "YYYY-MM-DD" или "YYYY-MM-DDTHH:MM:SS" (как показано в примере выше).

значение может быть передано как:

  • "year" — год;
  • "quarter" — квартал;
  • "month" — месяц;
  • "week" — неделя;
  • "day" — день;
  • "hour" — час;
  • "minute" — минута;
  • "second" — секунда;
  • "millisecond" — миллисекунда.

единица:

  • целое число. Вы не можете использовать дробные значения. Например, вы не можете добавить "половину года" (0.5);
  • может быть отрицательным числом: datetimeAdd("2025-05-25", -1, "month") вернёт 2025-04-25.

Расчёт конечной даты

Допустим, вы знаток кофе и хотите следить за свежестью зёрен:

Кофе Открыт Употребить до
DAK Honey Dude 31 октября, 2024 14 ноября, 2024
NO6 Full City Espresso 7 ноября, 2024 21 ноября, 2024
Ghost Roaster Giakanja 27 ноября, 2024 11 декабря, 2024

Здесь Употребить до — это настраиваемый столбец с выражением:

datetimeAdd([Открыт], 14, 'day')

Проверка, попадает ли текущее время между интервалом

Допустим вы хотите проверить, попадает ли сегодняшняя дата между Открыт и Употребить до. Предположим, сегодня — 1 декабря 2024 года.

Кофе Открыт Употребить до Годен
DAK Honey Dude 31 октября, 2024 14 ноября, 2024 Нет
NO6 Full City Espresso 7 ноября, 2024 21 ноября, 2024 Нет
Ghost Roaster Giakanja 27 ноября, 2024 11 декабря, 2024 Да

Употребить до — это настраиваемый столбец с выражением:

datetimeAdd([Открыт], 14, 'day')

Годен использует case для проверки, попадает ли текущая дата (now) между датами в Открыто и Закрыто:

case(between(now, [Открыт], [Употребить до]), "Да", "Нет")

Допустимые типы данных

Тип данных Работает с datetimeAdd
Строка
Число
Дата и время
Условие
JSON

Информация о типах данных приведена в разделе обучения руководства Metabase (англ.).

Тип данных "Дата и время" подразумевает «timestamp» и «datetime». Для дополнительной информации об этих типах данных в Glarus BI см. Часовые пояса.

Если ваши временны́е метки хранятся в базе данных в виде строк или чисел, администратор может преобразовать их во временны́е метки на странице "Метаданные таблиц".

Ограничения

Если вы используете MongoDB, datetimeAdd будет работать только в версии 5 и выше.

Связанные функции

В этом разделе рассматриваются функции и формулы, которые работают так же, как выражение datetimeAdd в Glarus BI, чтобы вы могли выбрать наиболее подходящий вариант.

Выражения Glarus BI

Другие инструменты

datetimeSubtract

datetimeSubtract и datetimeAdd взаимозаменяемы, так как вы можете использовать отрицательное число для значение. Рекомендуется избегать двойных отрицаний (например, вычитания отрицательного числа).

datetimeSubtract([Открыт], -14, "day")

делает то же самое, что и

datetimeAdd([Открыт], 14, "day")

SQL

Когда вы запускаете запрос с помощью конструктора запросов, Glarus BI преобразует ваши графические настройки (фильтры, сводки и т.д.) в запрос и запускает этот запрос в вашей базе данных, чтобы получить результаты.

Если наши данные образца кофе хранятся в базе данных PostgreSQL:

SELECT opened_on + INTERVAL '14 days' AS finish_by
FROM coffee

эквивалентно выражению datetimeAdd в Glarus BI:

datetimeAdd([Открыт], 14, "day")

Таблицы

Если наши данные образца кофе находятся в электронной таблице, где «Открыт» находится в столбце A с форматом даты, функция электронной таблицы

A:A + 14

выдаёт такой же результат, как и

datetimeAdd([Открыт], 14, "day")

Большинство инструментов электронных таблиц требуют использования различных функций для разных единиц времени (например, вы должны использовать другую функцию, чтобы добавить «месяцы» к дате). datetimeAdd упрощает преобразование всех этих функций в единый непротиворечивый синтаксис.

Python

Предполагая, что данные образца кофе находятся в структуре данных pandas с полем df, вы можете импортировать модуль datetime и использовать функцию timedelta:

df['Употребить до'] = df['Открыт'] + datetime.timedelta(days=14)

эквивалентно:

datetimeAdd([Открыт], 14, "day")

Дополнительная информация