Чтобы получить разницу между двумя датами или datetime(timestamp) в месяцах в PostgreSQL, мы будем использовать простой символ разности (вычитание). Окольным путем для нахождения разницы между двумя датами в PostgreSQL можно также использовать функцию age() с эпохой. Давайте посмотрим на примере всех этих двух подходов. Мы также рассмотрим пример, как получить разницу между двумя датами или столбцом datetime(timestamp) в таблице months PostgreSQL.

Разница между двумя датами в таблице months PostgreSQL с помощью простой разницы:

Символ Simple Difference используется для вычисления разницы между двумя датами в месяцах, как показано ниже.

Пример 1:

SELECT round(abs('2024-01-14' :: date - '2020-04-16' :: date)/(365.25/12),2) as month_diff;

Результат:

Разница между двумя датами в месяцах PostgreSQL с помощью функции AGE():

В функции AGE() мы передаем две даты, по которым нужно вычислить разницу в датах, а также делим полученные результаты на 30,4, что позволяет вычислить разницу между двумя датами в месяцах в PostgreSQL.

Пример 1:

SELECT round(abs((EXTRACT(epoch from age('2024-01-14', '2020-04-16')) / 86400)::INT)/30.35,2) as month_diff

Результат:

Разница между двумя столбцами даты в месяцах PostgreSQL :

Метод 1

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

Student_detail2:

Для вычисления разницы между двумя столбцами даты в таблице PostgreSQL в месяцах используется простой символ Difference, как показано ниже.

select *,round(abs(birthdaytime :: date - examdatetime :: date)/(365.25/12),2) as diff_months 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)/30.35,2) AS diff_months from student_detail2;

Мы вычислили столбец разницы в месяцах, поэтому результирующая таблица будет выглядеть так.

Результат: