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
:
эквивалентно: