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
:
эквивалентно: