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

datetimeSubtract

datetimeSubtract принимает значение даты и времени и вычитает из него некоторую единицу времени. Вы можете использовать эту функцию при работе с данными временных рядов, помеченными «началом» и «концом», например данными о сеансах или подписках.

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

Параметры

столбец может быть передан как:

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

значение:

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

единица:

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

Расчёт начальной даты

Допустим, вы планируете выездные работы на нескольких объектах. Вы знаете, что дорога с места на место занимает 30 минут, и вам нужно выяснить, сколько времени у вас есть, чтобы добраться вовремя:

Объект Прибытие до Отправление в
А 12 ноября, 2025, 09:30 12 ноября, 2025, 09:00
Б 12 ноября, 2025, 14:00 12 ноября, 2025, 13:30
В 12 ноября, 2025, 16:00 12 ноября, 2025, 15:30

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

datetimeSubtract([Прибытие до], 30, "minute")

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

Допустим вы хотите проверить, попадает ли текущая дата и время в интервал между начальной датой и конечной датой. Предположим, что текущая дата и время — 12 ноября 2025, 13:45.

Объект Прибытие до Отправление в В пути
А 12 ноября, 2025, 09:30 12 ноября, 2025, 09:00 Нет
Б 12 ноября, 2025, 14:00 12 ноября, 2025, 13:30 Да
В 12 ноября, 2025, 16:00 12 ноября, 2025, 15:30 Нет

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

datetimeSubtract([Прибытие до], 30, "minute")

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

case(between(now, [Отправление в], [Прибытие до]), "Да", "Нет")

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

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

Под "дата и время" подразумевается «timestamp» и «datetime» в Glarus BI. Для получения дополнительной информации о типах данных в Glarus BI см. Типы данных. Информация о типах данных также приведена в разделе обучения руководства Metabase (англ.).

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

Ограничения

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

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

В этом разделе рассматриваются функции и формулы, которые работают так же, как выражение Glarus BI datetimeSubtract.

Выражения Glarus BI

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

datetimeAdd

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

datetimeAdd([Прибытие до], -30, "minute")

даёт такой же результат как:

datetimeSubtract([Прибытие до], 30, "minute")

SQL

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

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

SELECT прибытие_до - INTERVAL '30 minutes' AS отправление
FROM events

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

datetimeSubtract([Прибытие до], 30, "minute")

Таблицы

Предполагая, что выборка данных событий находится в электронной таблице, где «Прибытие» находится в столбце A с форматом даты и времени, функция электронной таблицы

A:A - 30/(60*24)

даёт одинаковый результат с:

datetimeSubtract([Прибытие до], 30, "minute")

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

Python

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

df['Отправление в'] = df['Прибытие до'] - datetime.timedelta(minutes=30)

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

datetimeSubtract([Прибытие до], 30, "minute")

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