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», чтобы говорить о любом временном типе данных, поддерживаемом GlarusBI. Для получения дополнительной информации о типах данных в GlarusBI см. Типы данных.

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

Ограничения

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

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

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

Выражения GlarusBI

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

Дата Время добавить

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

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

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

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

SQL

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

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

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

эквивалентно выражению GlarusBI 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")

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