Перейти к основному содержимому

SQL DATE_PART

В этом посте мы подробно рассмотрим функцию DATE_PART, как она работает и почему мы ее используем.

Функция DATE_PART позволяет извлечь указанную часть даты из даты/времени. Например, если вы хотите извлечь месяц из даты 14 февраля 2022 года, она вернет 2, так как февраль — это второй месяц в году.

Как использовать функцию DATE_PART

Как и большинство других SQL-функций, вам нужно передать аргументы; для функции DATE_PART вы передаете поле даты/времени, из которого хотите извлечь часть даты, и указываете часть, которую хотите извлечь. Вы можете извлечь числовой месяц, дату, год, час, секунды и т.д. из поля временной метки или даты, используя функцию DATE_PART с помощью следующего синтаксиса:

date_part(<часть даты/времени>, <поле даты/дата>)

Давайте рассмотрим практический пример ниже.

Пример функции DATE_PART

select
date_part('month', order_date) as order_month,
round(avg(amount)) as avg_order_amount
from {{ ref('orders') }}
group by 1

Этот запрос, использующий таблицу orders из Jaffle Shop, вернет округленную сумму заказа для каждого месяца заказа (представленного в виде числового значения):

order_monthavg_order_amount
117
215
318
417

В отличие от функции DATE_TRUNC, которая фактически усекает дату до ее первого вхождения указанной части даты (таким образом, сохраняя структуру даты), функция DATE_PART возвращает числовое значение из поля даты.

Вы можете часто видеть, что функция DATE_PART заменяется функцией EXTRACT, которая выполняет ту же функциональность.

Синтаксис функции DATE_PART в Snowflake, Databricks, BigQuery и Redshift

Хранилище данныхПоддержка DATE_PART?Примечания
Snowflake
Databricks
Amazon Redshift
Google BigQueryBigQuery поддерживает функцию EXTRACT, которая выполняет ту же функциональность, что и функция DATE_PART
PostgresЭто чрезмерно педантично, и вы, вероятно, никогда не столкнетесь с проблемой, когда DATE_PART и EXTRACT оцениваются в различия в значениях, которые действительно имеют значение, но стоит отметить. Функции DATE_PART и EXTRACT в Postgres ранее давали одинаковый результат. Однако с Postgres 14 функция EXTRACT теперь возвращает числовой тип вместо 8-байтового числа с плавающей запятой.

Сценарии использования функции DATE_PART

Мы чаще всего видим использование функции DATE_PART или EXTRACT в работе с данными для анализа:

  • Фискальные календари: Если ваш бизнес использует фискальные годы или календари, отличающиеся от обычного 12-месячного цикла, функции DATE_PART могут помочь создать соответствие между фискальными и обычными календарями
  • Разовые анализы: Функции DATE_PART полезны в разовых анализах и запросах, когда вам нужно рассмотреть значения, сгруппированные по периодам дат или для сравнения периодов

Это не исчерпывающий список того, где ваша команда может использовать функцию DATE_PART в ваших моделях dbt и логике BI-инструментов, но он содержит некоторые общие сценарии, с которыми аналитики сталкиваются ежедневно.

0