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")

Дополнительная информация