SQL DATEADD
Если вы когда-либо использовали функцию DATEADD в SQL в разных диалектах (таких как BigQuery, Postgres и Snowflake), вы, вероятно, каждый раз искали в интернете синтаксис этой функции. Почти невозможно запомнить порядок аргументов (или точное название функции) dateadd.
Эта статья расскажет, как работает функция DATEADD, о нюансах ее использования в основных облачных хранилищах данных и о том, как стандартизировать различия в синтаксисе с помощью макроса dbt.
Что такое функция DATEADD в SQL?
Функция DATEADD в SQL добавляет временной/дата интервал к дате и возвращает новую дату. Это позволяет добавлять или вычитать определенный период времени из заданной начальной даты.
Звучит достаточно просто, но эта функция позволяет делать полезные вещи, такие как расчет предполагаемой даты доставки на основе даты заказа.
Различия в синтаксисе DATEADD на платформах хранилищ данных
Все они принимают примерно одинаковые параметры, но с небольшими различиями в синтаксисе и порядке:
- Начальная/исходная дата
- Часть даты (день, неделя, месяц, год)
- Интервал (целое число для увеличения)
Сами функции называются немного по-разному, что характерно для SQL диалектов.
Например, функция DATEADD в Snowflake…
dateadd( {{ datepart }}, {{ interval }}, {{ from_date }} )
Поддерживаются час, минута и секунда!
Функция DATEADD в Databricks
date_add( {{ startDate }}, {{ numDays }} )
Функция DATEADD в BigQuery…
date_add( {{ from_date }}, INTERVAL {{ interval }} {{ datepart }} )
Части даты менее одного дня (час / минута / секунда) не поддерживаются.
Функция DATEADD в Postgres…
Postgres не предоставляет функцию dateadd из коробки, поэтому вам придется справляться самостоятельно - но синтаксис очень похож на функцию BigQuery…
{{ from_date }} + (interval '{{ interval }} {{ datepart }}')
Переход между этими синтаксисами SQL обычно требует быстрого просмотра документации хранилища, чтобы вернуться в строй.