Чтобы получить разницу между двумя датами или datetime(timestamp) в часах в PostgreSQL, мы будем использовать простой символ разности (вычитание). Окольным путем для нахождения разницы между двумя датами в часах в PostgreSQL мы также можем использовать функцию age() с эпохой. Давайте посмотрим на примере всех этих двух подходов. Мы также рассмотрим пример, как получить разницу между двумя датами или столбцом datetime(timestamp) в таблице часов PostgreSQL.
Разница между двумя datetime (timestamp) в часах PostgreSQL с помощью простой разницы:
Символ Simple Difference используется для вычисления разницы между двумя датами в часах, как показано ниже.
Пример 1:
SELECT round(abs('2024-04-01 09:12:00' :: date - '2020-04-14 09:12:00' :: date)*(24),2) as hours_diff;
Результат:

Разница между двумя столбцами datetime (timestamp) в часах PostgreSQL :
Метод 1
Мы будем использовать таблицу Student_detail2 в качестве примера, чтобы показать, как найти разницу между двумя столбцами даты в часах в PostgreSQL.
Student_detail2:

Для вычисления разницы между двумя столбцами даты в таблице PostgreSQL в часах используется символ Simple Difference, как показано ниже.
select *,round(abs(birthdaytime :: date - examdatetime :: date)*(24),2) as hours_diff from student_detail2;
Мы привели два столбца даты к дате, затем нашли разницу и преобразовали ее в часы, поэтому она будет округлена
Результат:

Разница между двумя датами (временными метками) в часах PostgreSQL с помощью функции AGE():
В функции AGE() мы передаем две даты, по которым нужно вычислить разницу в датах, а также разделить результат на 86400. Кроме того, мы будем использовать функцию date_part(), которая вычислит разницу между двумя датами в часах в PostgreSQL.
Пример 1:
SELECT COALESCE(round(abs((EXTRACT(epoch from age('2024-04-01 09:12:00', '2020-04-14 09:12:00')) / 86400)::int),2)::int + DATE_PART('month', age('2024-04-01 09:12:00', '2020-04-14 09:12:00'))::float*0.454545::float)*24 as hours_diff
Результат:

Разница между двумя столбцами datetime (timestamp) в часах PostgreSQL с помощью EXTRACT() :
Мы будем использовать таблицу Student_detail2 в качестве примера, чтобы показать, как найти разницу между двумя столбцами даты в часах в PostgreSQL.
Student_detail2:

В функции EXTRACT() мы передадим два столбца дат, по которым нужно вычислить разницу в датах. Она использует функцию EPOCH вместе с функцией Age(), а также date_part(), которая вычислит разницу между двумя столбцами дат в часах в PostgreSQL.
SELECT *,COALESCE(round(abs((EXTRACT(epoch from age(examdatetime::date, birthdaytime::date)) / 86400)::INT),2)::int + DATE_PART('month', age(examdatetime::date, birthdaytime::date))::float*0.454545::float)*24 as hours_diff from student_detail2;
Мы вычислили разницу столбцов в часах, поэтому результирующая таблица будет иметь вид.
Результат:
