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

datetimeAdd

datetimeAdd принимает значение даты и времени и добавляет к нему некоторую единицу времени. Эта функция полезна при работе с данными временных рядов, помеченными «началом» и «концом», например с данными о сеансах или подписках.

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

Параметры

column может быть любым из:

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

unit может быть любым из:

  • "год"
  • "квартал"
  • "месяц"
  • "день"
  • "час"
  • "минута"
  • "секунда"
  • "миллисекунда"

amount:

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

Расчёт конечной даты

Допустим, вы знаток кофе и хотите следить за свежестью зерен:

Кофе Начало Окончание
DAK Honey Dude October 31, 2022 November 14, 2022
NO6 Full City Espresso November 7, 2022 November 21, 2022
Ghost Roaster Giakanja November 27, 2022 December 11, 2022

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

datetimeAdd([Opened On], 14, 'day')

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

Допустим вы хотите проверить, попадает ли сегодняшняя дата между Начальной датой и Датой конца. Предположим, что сегодня — 1 декабря 2022 года.

Кофейня Открытие Закрытие Всё ещё актуально сегодня
DAK Honey Dude October 31, 2022 November 14, 2022 No
NO6 Full City Espresso November 7, 2022 November 21, 2022 No
Ghost Roaster Giakanja November 27, 2022 December 11, 2022 Yes

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

datetimeAdd([Opened On], 14, 'day')

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

case(between(now, [Opened On], [Finish By]), "Yes", "No")

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

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

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

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

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

Ограничения

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

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

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

Выражения Glarus BI

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

datetimeSubtract

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

datetimeSubtract([Opened On], -14, "day")

does the same thing as

datetimeAdd([Opened On], 14, "day")

SQL

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

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

SELECT opened_on + INTERVAL '14 days' AS finish_by
FROM coffee

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

datetimeAdd([Opened On], 14, "day")

Таблицы

Если наши данные образца кофе находятся в электронной таблице, где «Открыто в» находится в столбце A с форматом даты, функция электронной таблицы

A:A + 14

выдает такой же результат как и

datetimeAdd([Opened On], 14, "day")

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

Python

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

df['Finish By'] = df['Opened On'] + datetime.timedelta(days=14)

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

datetimeAdd([Opened On], 14, "day")

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