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

Разница между двумя датами в неделях PostgreSQL с помощью функции AGE():
В функции AGE() мы будем передавать две даты, по которым нужно вычислить разницу в неделях, а также делить полученные результаты на 7, что позволит вычислить разницу между двумя датами в неделях в PostgreSQL.
Пример 1:
SELECT round(abs((EXTRACT(epoch from age('2024-01-14', '2020-04-01')) / 86400)::INT)/7,2) as weeks_diff
Результат:

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

Для вычисления разницы между двумя столбцами даты в таблице PostgreSQL в неделях используется простой символ Difference, как показано ниже.
select *,round(abs(birthdaytime :: date - examdatetime :: date)/(7),2) as weeks_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)/7,2) AS weeks_diff from student_detail2;
Мы вычислили разницу столбцов в неделях, поэтому результирующая таблица будет выглядеть так.
Результат:
