datetimeDiff¶
datetimeDiff получает количество времени между двумя значениями даты и времени, используя указанную единицу времени. Обратите внимание, что разница рассчитывается в целых единицах (см. пример ниже).
| Синтаксис | Пример |
|---|---|
datetimeDiff(datetime1, datetime2, unit) |
datetimeDiff("2022-02-01", "2022-03-01", "month") |
| Получает разницу между двумя значениями datetime (datetime2 минус datetime 1), используя указанную единицу времени. | 1 |
Параметры¶
datetime1 и datetime2 могут быть:
- название столбца метки времени,
- пользовательское выражение, которое возвращает datetime или
- строка в формате
"YYYY-MM-DD"или"YYYY-MM-DDTHH:MM:SS"(как показано в примере выше).
unit может быть любым из:
- "year"
- "quarter"
- "month"
- "week"
- "day"
- "hour"
- "minute"
- "second"
Подсчёт возраста¶
Допустим, вы производитель сыра и хотите отслеживать процесс созревания:
| Cheese | Aging Start | Aging End | Mature Age (Months) |
|---|---|---|---|
| Provolone | January 19, 2022 | March 17, 2022 | 1 |
| Feta | January 25, 2022 | May 3, 2022 | 3 |
| Monterey Jack | January 27, 2022 | October 11, 2022 | 8 |
Возраст зрелости (в месяцах) – это специальный столбец с выражением:
Для расчёта текущего возраста сыра в месяцах вы используете now в качестве второго параметра datetime, например:
| Cheese | Aging Start | Aging End | Mature Age (Months) | Today | Current Age (Months) |
|---|---|---|---|---|---|
| Provolone | January 19, 2022 | March 17, 2022 | 1 | September 19, 2022 | 8 |
| Feta | January 25, 2022 | May 3, 2022 | 3 | September 19, 2022 | 7 |
| Monterey Jack | January 27, 2022 | October 11, 2022 | 8 | September 19, 2022 | 7 |
Для расчёта текущего возраста сыра в днях вы используете:
Допустимые типы данных¶
| Типы данных | Работает с datetimeDiff |
|---|---|
| Строка | ❌ |
| Число | ❌ |
| Дата Время | ✅ |
| Условие | ❌ |
| JSON | ❌ |
Мы используем «timestamp» и «datetime», чтобы говорить о любом временном типе данных, поддерживаемом Glarus BI. Для дополнительной информации о типах данных в вашей базе данных см. Руководство по типам данных.
Информация о типах данных также приведена в разделе обучения руководства Metabase (англ.).
Если ваши временные метки хранятся в базе данных в виде строк или чисел, администратор может преобразовать их в временные метки на странице "Метаданные таблиц".
Ограничения¶
На данный момент datetimeDiff недоступен для следующих баз данных:
- Druid;
- Google Analytics.
Связанные функции¶
В этом разделе рассматриваются функции и формулы, которые работают так же, как выражение datetimeDiff Glarus BI, с примечаниями о том, как выбрать лучший вариант для вашего случая использования.
SQL¶
Когда вы запускаете запрос с помощью конструктора запросов, Glarus BI преобразует ваши графические настройки запроса (фильтры, сводки и т.д.) в запрос и запускает этот запрос. против вашей базы данных, чтобы получить ваши результаты.
Если наши данные образца сыра хранятся в базе данных PostgreSQL:
эквивалентно выражению datetimeDiff в Glarus BI:
Некоторые базы данных, такие как Snowflake и BigQuery, поддерживают такие функции, как DATEDIFF или DATE_DIFF. Для получения дополнительной информации ознакомьтесь с нашим списком общих справочных руководств по SQL (документация Metabase, англ.).
Таблицы¶
Если наши данные образца сыра находятся в электронной таблице, где «Начало старения» находится в столбце B, а «Конец старения» — в столбце C:
дает такой же результат как и:
Да, DATEDIF выглядит немного неправильно, но функция электронной таблицы на самом деле является DATEDIF() с одной буквой "f", а не DATEDIFF().
Python¶
Предполагая, что данные образца сыра находятся в столбце данных pandas с именем df, вы можете напрямую вычесть даты и использовать timedelta64 numpy, чтобы преобразовать разницу в месяцы:
аналогично: