DatetimeAdd¶
datetimeAdd
принимает значение даты и времени и добавляет к нему некоторую единицу времени. Эта функция полезна при работе с данными временны́х рядов, помеченными «началом» и «концом», например с данными о сеансах или подписках.
Синтаксис | Пример |
---|---|
datetimeAdd(столбец, значение, единица) |
datetimeAdd("2025-03-25", 1, "month") |
Принимает значение метки времени или даты и добавляет к нему указанное количество единиц времени. | 2025-04-25 |
Параметры¶
столбец
может быть любым из:
- название столбца, содержащего метки даты или времени;
- пользовательское выражение, которое возвращает datetime;
- строка в формате
"YYYY-MM-DD"
или"YYYY-MM-DDTHH:MM:SS"
(как показано в примере выше).
значение
может быть передано как:
"year"
— год;"quarter"
— квартал;"month"
— месяц;"week"
— неделя;"day"
— день;"hour"
— час;"minute"
— минута;"second"
— секунда;"millisecond"
— миллисекунда.
единица
:
- целое число. Вы не можете использовать дробные значения. Например, вы не можете добавить "половину года" (0.5);
- может быть отрицательным числом:
datetimeAdd("2025-05-25", -1, "month")
вернёт2025-04-25
.
Расчёт конечной даты¶
Допустим, вы знаток кофе и хотите следить за свежестью зёрен:
Кофе | Открыт | Употребить до |
---|---|---|
DAK Honey Dude | 31 октября, 2024 | 14 ноября, 2024 |
NO6 Full City Espresso | 7 ноября, 2024 | 21 ноября, 2024 |
Ghost Roaster Giakanja | 27 ноября, 2024 | 11 декабря, 2024 |
Здесь Употребить до — это настраиваемый столбец с выражением:
Проверка, попадает ли текущее время между интервалом¶
Допустим вы хотите проверить, попадает ли сегодняшняя дата между Открыт и Употребить до. Предположим, сегодня — 1 декабря 2024 года.
Кофе | Открыт | Употребить до | Годен |
---|---|---|---|
DAK Honey Dude | 31 октября, 2024 | 14 ноября, 2024 | Нет |
NO6 Full City Espresso | 7 ноября, 2024 | 21 ноября, 2024 | Нет |
Ghost Roaster Giakanja | 27 ноября, 2024 | 11 декабря, 2024 | Да |
Употребить до — это настраиваемый столбец с выражением:
Годен использует case для проверки, попадает ли текущая дата (now) между датами в Открыто и Закрыто:
Допустимые типы данных¶
Тип данных | Работает с datetimeAdd |
---|---|
Строка | ❌ |
Число | ❌ |
Дата и время | ✅ |
Условие | ❌ |
JSON | ❌ |
Информация о типах данных приведена в разделе обучения руководства Metabase (англ.).
Тип данных "Дата и время" подразумевает «timestamp» и «datetime». Для дополнительной информации об этих типах данных в Glarus BI см. Часовые пояса.
Если ваши временны́е метки хранятся в базе данных в виде строк или чисел, администратор может преобразовать их во временны́е метки на странице "Метаданные таблиц".
Ограничения¶
Если вы используете MongoDB, datetimeAdd
будет работать только в версии 5 и выше.
Связанные функции¶
В этом разделе рассматриваются функции и формулы, которые работают так же, как выражение datetimeAdd
в Glarus BI, чтобы вы могли выбрать наиболее подходящий вариант.
Другие инструменты
datetimeSubtract¶
datetimeSubtract
и datetimeAdd
взаимозаменяемы, так как вы можете использовать отрицательное число для значение
. Рекомендуется избегать двойных отрицаний (например, вычитания отрицательного числа).
делает то же самое, что и
SQL¶
Когда вы запускаете запрос с помощью конструктора запросов, Glarus BI преобразует ваши графические настройки (фильтры, сводки и т.д.) в запрос и запускает этот запрос в вашей базе данных, чтобы получить результаты.
Если наши данные образца кофе хранятся в базе данных PostgreSQL:
эквивалентно выражению datetimeAdd
в Glarus BI:
Таблицы¶
Если наши данные образца кофе находятся в электронной таблице, где «Открыт» находится в столбце A с форматом даты, функция электронной таблицы
выдаёт такой же результат, как и
Большинство инструментов электронных таблиц требуют использования различных функций для разных единиц времени (например, вы должны использовать другую функцию, чтобы добавить «месяцы» к дате). datetimeAdd
упрощает преобразование всех этих функций в единый непротиворечивый синтаксис.
Python¶
Предполагая, что данные образца кофе находятся в структуре данных pandas
с полем df
, вы можете импортировать модуль datetime
и использовать функцию timedelta
:
эквивалентно: