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 |
Возраст зрелости (в месяцах) – это специальный столбец с выражением:
datetimeDiff([Aging Start], [Aging End], "month")
Для расчета текущего возраста сыра в месяцах вы используете 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([Aging Start], now, "month")
Для расчета текущего возраста сыра в днях вы используете:
datetimeDiff([Aging Start], now, "day")
Допустимые типы данных¶
| Типы данных | Работает с datetimeDiff
|
|—————————————————————————————————| ————————- |
| Строка | ❌ |
| Число | ❌ |
| Дата Время | ✅ |
| Условие | ❌ |
| JSON | ❌ |
Мы используем «timestamp» и «datetime», чтобы говорить о любом временном типе данных, поддерживаемом GlarusBI. Для дополнительной информации о типах данных в вашей базе данных см. Руководство по типам данных.
Если ваши временные метки хранятся в базе данных в виде строк или чисел, администратор может преобразовать их в временные метки на странице “Метаданные таблиц”.
Ограничения¶
на данный момент datetimeDiff
недоступен для следующих баз данных:
Druid
Google Analytics
Связанные функции¶
В этом разделе рассматриваются функции и формулы, которые работают так же, как выражение datetimeDiff
GlarusBI, с примечаниями о том, как выбрать лучший вариант для вашего случая использования.
SQL¶
Когда вы запускаете вопрос с помощью конструктора запросов, GlarusBI преобразует ваши графические настройки запроса (фильтры, сводки и т. д.) в запрос и запускает этот запрос. против вашей базы данных, чтобы получить ваши результаты.
Если наши данные образца сыра хранятся в базе данных PostgreSQL:
SELECT DATE_PART('month', AGE(aging_end, aging_start)) AS mature_age_months
FROM cheese
эквивалентно выражению datetimeDiff
в GlarusBI:
datetimeDiff([Aging Start], [Aging End], "month")
Некоторые базы данных, такие как Snowflake и BigQuery, поддерживают такие функции, как DATEDIFF или DATE_DIFF. Для получения дополнительной информации ознакомьтесь с нашим списком общих справочных руководств по SQL.
Таблицы¶
Если наши данные образца сыра находятся в электронной таблице, где «Начало старения» находится в столбце B, а «Конец старения» — в столбце C:
DATEDIF(B1, C1, "M")
дает такой же результат как и:
datetimeDiff([Aging Start], [Aging End], "month")
Да, DATEDIF
выглядит немного неправильно, но функция электронной таблицы на самом деле является DATEDIF()
с одной буквой “f”, а не DATEDIFF()
.
Python¶
Предполагая, что данные образца сыра находятся в столбце данных pandas
с именем df
, вы можете напрямую вычесть даты и использовать timedelta64
numpy
, чтобы преобразовать разницу в месяцы:
df['Mature Age (Months)'] = (df['Aging End'] - df['Aging Start']) / np.timedelta64(1, 'M')
аналогично:
datetimeDiff([Aging Start], [Aging End], "month")