В этом разделе мы узнаем, как использовать функцию PostgreSQL DATE_TRUNC(). Функция DATE_TRUNC() используется для усечения даты или временной метки до заданного уровня точности. Она позволяет округлить дату или временную метку до определенной единицы измерения, такой как год, квартал, месяц, неделя, день, час и т. д. 

Синтаксис функции DATE_TRUNC() в PostgreSQL:

DATE_TRUNC(unit、source)

unit:Указывает единицу, до которой вы хотите усечь дату или временную метку (например, ‘год’, ‘квартал’, ‘месяц’, ‘неделя’, ‘день’, ‘час’ и т.д.).

source:Дата или временная метка, которую необходимо усечь.

Значение единицы измерения должно быть одним из следующих значений:

  • century
  • decade
  • year
  • month
  • day
  • hour
  • minute
  • second
  • microseconds
  • milliseconds

Пример функции TRUNC() в PostgreSQL

Ниже приведены примеры использования функции TRUNC() в PostgreSQL.

  • Усечение временной метки до начала года: Функция TRUNC() в PostgreSQL:

В приведенном ниже примере мы передаем год в качестве аргумента “единица” и временную метку в качестве аргумента “источник” для того, чтобы усечь дату или временную метку до начала года.す。

SELECT DATE_TRUNC('year', '2024-02-24 15:30:45'::timestamp) AS truncated_date;

Это приведет к усечению временной метки до начала 2024 года.

Результат:

  • Усечение временной метки до начала месяца: Функция TRUNC() в PostgreSQL:

В приведенном ниже примере мы передаем месяц в качестве аргумента “единица” и временную метку в качестве аргумента “источник” для того, чтобы усечь дату или временную метку до начала  месяца, указанного в дате.

SELECT DATE_TRUNC('month', '2024-02-24 15:30:45'::timestamp) AS truncated_date;

Это приведет к усечению временной метки до начала февраля 2024 года.

Результат:

  • Усечение временной метки до начала недели: Функция TRUNC() в PostgreSQL:

В приведенном ниже примере мы передаем неделю в качестве аргумента “единица” и временную метку в качестве аргумента “источник” для того, чтобы усечь дату или временную метку до начала недели, указанной в дате.

SELECT DATE_TRUNC('week', '2024-02-24 15:30:45'::timestamp) AS truncated_date;

Это приведет к усечению временной метки до начала недели, указанной в дате.

Результат:

  • Усечение временной метки до ближайшего часа: Функция TRUNC() в PostgreSQL:

В приведенном ниже примере мы будем передавать час в качестве аргумента “единица” и временную метку в качестве аргумента “источник”, чтобы усечь дату или временную метку до ближайшего часа указанной даты.

SELECT DATE_TRUNC('hour', '2024-02-24 15:30:45'::timestamp) AS truncated_date;

Это приведет к усечению временной метки до ближайшего часа для указанной даты.

Результат:

  • Усечение временной метки до начала квартала: функция TRUNC() в PostgreSQL:

В приведенном ниже примере мы передаем квартал в качестве аргумента “единица” и временную метку в качестве аргумента “источник” для того, чтобы усечь дату или временную метку до начала квартала для указанной даты.

SELECT DATE_TRUNC('quarter', '2024-02-24 15:30:45'::timestamp) AS truncated_date;

Это приведет к усечению временной метки до начала квартала.

Результат:

  • Усечение временной метки до начала декады: Функция TRUNC() в PostgreSQL:

В приведенном ниже примере мы передаем десятилетие в качестве аргумента “единица” и временную метку в качестве аргумента “источник”, чтобы усечь дату или временную метку до начала десятилетия для указанной даты.

SELECT DATE_TRUNC('decade', '2024-02-24'::date) AS truncated_date;

Это приведет к усечению временной метки до начала десятилетия.

Результат:

  • Усечение временной метки до начала дня: Функция TRUNC() в PostgreSQL:

В приведенном ниже примере мы передаем день в качестве аргумента “единица” и временную метку в качестве аргумента “источник” для того, чтобы усечь дату или временную метку до начала дня для указанной даты.

SELECT DATE_TRUNC('day', '2024-02-24'::date) AS truncated_date;

Это приведет к усечению временной метки до начала дня.

Результат: