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

datetimeSubtract

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

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

Параметры

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

unit может быть любым из: - "year" - "quarter" - "month" - "day" - "hour" - "minute" - "second" - "millisecond"

amount:

  • Целое число или десятичное число.
  • Может быть отрицательным числом: datetimeSubtract("2021-03-25", -1, "month") вернёт 2021-04-25.

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

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

Event Прибытие до Отправление в
Drinks November 12, 2022 6:30 PM November 12, 2022 6:00 PM
Dinner November 12, 2022 8:00 PM November 12, 2022 7:30 PM
Dancing November 13, 2022 12:00 AM November 12, 2022 11:30 PM

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

datetimeSubtract([Arrive By], 30, "minute")

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

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

Событие Начало в Окончание в В процессе
Drinks November 12, 2022 6:30 PM November 12, 2022 6:00 PM No
Dinner November 12, 2022 8:00 PM November 12, 2022 7:30 PM Yes
Dancing November 13, 2022 12:00 AM November 12, 2022 11:30 PM No

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

datetimeSubtract([Arrive By], 30, "minute")

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

case(between(now, [Depart At], [Arrive By]), "Yes", "No")

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

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

Мы используем «отметка времени» и «datetime», чтобы говорить о любом временном типе данных, поддерживаемом Glarus BI. Для получения дополнительной информации о типах данных в Glarus BI см. Типы данных.

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

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

Ограничения

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

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

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

Выражения Glarus BI

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

datetimeAdd

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

datetimeAdd([Arrive By], -30, "minute")

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

datetimeSubtract([Arrive By], 30, "minute")

SQL

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

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

SELECT arrive_by - INTERVAL '30 minutes' AS depart_at
FROM events

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

datetimeSubtract([Arrive By], 30, "minute")

Таблицы

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

A:A - 30/(60*24)

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

datetimeSubtract([Arrive By], 30, "minute")

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

Python

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

df['Depart At'] = df['Arrive By'] - datetime.timedelta(minutes=30)

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

datetimeSubtract([Arrive By], 30, "minute")

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