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

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

DATE_TRUNC(unit、source)

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

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

В нашем случае. Значение единицы измерения должно быть “час“.

Усечение временной метки до ближайшего часа в postgresql – функция DATE_TRUNC() :

Для того чтобы усечь временную метку до ближайшего часа в нашем примере, мы будем использовать функцию DATE_TRUNC().

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

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

Результат:

Заполнение временной метки с ближайшим часом в таблице PostgreSQL с помощью DATE_TRUNC()

Мы будем использовать таблицу Student_detail в качестве примера, чтобы показать, как заполнить первый день недели (понедельник) из даты в PostgreSQL

Student_detail:

В таблице выше мы будем использовать функцию DATE_TRUNC(), которая принимает в качестве аргумента “hour” и столбец с именем “birthdaytime”. Она усечет дату до ближайшего часа на основе столбца “время рождения” и сохранит в новом столбце таблицы postgresql, как показано ниже

SELECT *, DATE_TRUNC('hour', birthdaytime::timestamp) AS nearest_hour_timestamp from Student_detail;

Таким образом, в результирующей таблице будет столбец Nearest_hour_timestamp.

Результат: