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 |
Здесь Отправление в — это настраиваемый столбец с выражением:
Проверка, попадает ли текущая дата и время в интервал¶
Допустим вы хотите проверить, попадает ли текущая дата и время в интервал между начальной датой и конечной датой. Предположим, что текущая дата и время — 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 | Нет |
Отправление в — это настраиваемый столбец с выражением:
В пути использует case для проверки, попадает ли текущая дата и время (now) в интервал между датами и временем в Начало в и Окончание в:
Допустимые типы данных¶
| Типы данных | Работает с datetimeSubtract |
|---|---|
| Строка | ❌ |
| Число | ❌ |
| Дата и время | ✅ |
| Условие | ❌ |
| JSON | ❌ |
Под "дата и время" подразумевается «timestamp» и «datetime» в Glarus BI. Для получения дополнительной информации о типах данных в Glarus BI см. Типы данных. Информация о типах данных также приведена в разделе обучения руководства Metabase (англ.).
Если ваши временны́е метки хранятся в базе данных в виде строк или чисел, администратор может преобразовать их во временны́е метки на странице "Метаданные таблиц".
Ограничения¶
Если вы используете MongoDB, datetimeSubtract будет работать только в версии 5 и выше.
Связанные функции¶
В этом разделе рассматриваются функции и формулы, которые работают так же, как выражение Glarus BI datetimeSubtract.
Другие инструменты
datetimeAdd¶
datetimeSubtract и datetimeAdd взаимозаменяемы, так как вы можете использовать отрицательное число для amount. Мы могли бы использовать любое выражение для нашего примера событий, но лучше избегать «двойных отрицаний» (таких как вычитание отрицательного числа).
даёт такой же результат как:
SQL¶
Когда вы создаёте запрос с помощью конструктора запросов, Glarus BI преобразует ваши графические настройки (фильтры, сводки и т.д.) в запрос и запускает этот его в вашей базе данных, чтобы получить результаты.
Если наши примеры данных о событиях хранятся в базе данных PostgreSQL:
эквивалентно выражению Glarus BI datetimeSubtract:
Таблицы¶
Предполагая, что выборка данных событий находится в электронной таблице, где «Прибытие» находится в столбце A с форматом даты и времени, функция электронной таблицы
даёт одинаковый результат с:
Большинство электронных таблиц требуют, чтобы вы использовали разные функции для разных единиц времени (например, чтобы вычесть «дни» из даты, нужны другие функции). datetimeSubtract упрощает преобразование всех этих функций в единый непротиворечивый синтаксис.
Python¶
Если наши выборочные данные событий находятся в столбце структуры данных pandas в поле df, вы можете импортировать модуль datetime и использовать функцию timedelta:
эквивалентно: