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
, чтобы преобразовать разницу в месяцы:
аналогично: