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 |
Здесь Окончание — это настраиваемый столбец с выражением:
Проверка, попадает ли текущее время между интервалом¶
Допустим вы хотите проверить, попадает ли сегодняшняя дата между Начальной датой и Датой конца. Предположим, что сегодня — 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 |
Закрытие — это настраиваемый столбец с выражением:
Всё ещё актуально сегодня использует case для проверки, попадает ли текущая дата (now) между датами в Открыто и Закрыто:
Допустимые типы данных¶
| Тип данных | Работает с datetimeAdd |
|---|---|
| Строка | ❌ |
| Число | ❌ |
| Дата Время | ✅ |
| Условие | ❌ |
| JSON | ❌ |
Информация о типах данных приведена в разделе обучения руководства Metabase (англ.).
Мы используем «timestamp» и «datatime», чтобы говорить о любом временном типе данных, поддерживаемом Glarus BI. Для дополнительной информации о этих типах данных в Glarus BI см. Часовые пояса.
Если ваши временные метки хранятся в базе данных в виде строк или чисел, администратор может преобразовать их в временные метки на странице "Метаданные таблиц".
Ограничения¶
Если вы используете MongoDB, datetimeAdd будет работать только в версии 5 и выше.
Связанные функции¶
В этом разделе рассматриваются функции и формулы, которые работают так же, как выражение datetimeAdd Glarus BI, с примечаниями о том, как выбрать лучший вариант для вашего случая использования.
Другие инструменты
datetimeSubtract¶
datetimeSubtract и datetimeAdd взаимозаменяемы, так как вы можете использовать отрицательное число для amount. Как правило, рекомендуется избегать двойных отрицаний (например, вычитания отрицательного числа).
does the same thing as
SQL¶
Когда вы запускаете запрос с помощью конструктора запросов, Glarus BI преобразует ваши графические настройки запроса (фильтры, сводки и т.д.) в запрос и запускает этот запрос. против вашей базы данных, чтобы получить ваши результаты.
Если наши данные образца кофе хранятся в базе данных PostgreSQL:
эквивалентно выражению datetimeAdd в Glarus BI:
Таблицы¶
Если наши данные образца кофе находятся в электронной таблице, где «Открыто в» находится в столбце A с форматом даты, функция электронной таблицы
выдает такой же результат как и
Большинство инструментов электронных таблиц требуют использования разных функций для разных единиц времени (для Примера вы должны использовать другую функцию, чтобы добавить «месяцы» к дате). datetimeAdd упрощает преобразование всех этих функций в единый непротиворечивый синтаксис.
Python¶
Предполагая, что данные образца кофе находятся в столбце данных pandas с именем df, вы можете импортировать модуль datetime и использовать функцию timedelta:
эквивалентно: