Для того чтобы получить разницу между двумя датами или datetime(timestamp) в годах в PostgreSQL, мы будем использовать простой символ разности (вычитания). Окольным путем для нахождения разницы между двумя датами в годах в PostgreSQL мы также можем использовать функцию age() с эпохой. Давайте посмотрим на примере всех этих двух подходов. Мы также рассмотрим пример, как получить разницу между двумя датами или столбцом datetime(timestamp) в таблице years PostgreSQL.
Разница между двумя датами в таблице years PostgreSQL с помощью простой разницы:
Символ Simple Difference используется для вычисления разницы между двумя датами в годах, как показано ниже.
Пример 1:
SELECT round(abs((EXTRACT(epoch from age('2024-01-14', '2020-04-01')) / 86400)::INT)/365.25,2) as year_diff
Результат:

Разница между двумя датами в годах PostgreSQL с помощью функции AGE():
В функции AGE() мы передаем две даты, по которым нужно вычислить разницу в датах, а также делим полученные результаты на 365.25, что позволяет вычислить разницу между двумя датами в годах в PostgreSQL.
Пример 1:
SELECT round(abs('2024-01-14' :: date - '2020-04-01' :: date)/(365.25),2) as year_diff;
Результат:

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

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

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

В функции EXTRACT() мы передадим два столбца дат, для которых необходимо вычислить разницу в датах. Для этого используется функция EPOCH вместе с функцией Age(), которая вычислит разницу между двумя столбцами дат в годах в PostgreSQL.
SELECT *, round(ABS((EXTRACT(epoch from age(examdatetime::date, birthdaytime::date))/ 86400)::INT)/365.25,2) AS year_diff from student_detail2;
Мы вычислили разницу столбцов в годах, поэтому результирующая таблица будет выглядеть так.
Результат:
