В SQL можно вычитать одну дату из другой:

SELECT p.purchase_date,
       current_timestamp,
       current_timestamp - p.purchase_date AS difference
  FROM purchase p
# purchase_date current_timestamp difference
1 2019-03-11 17:15:02.206+07 2023-01-23 08:52:46.325884+07 1413 days 15:37:44.119884
2 2019-03-10 17:12:34.206+07 2023-01-23 08:52:46.325884+07 1414 days 15:40:12.119884
3 2019-03-05 16:12:33.206+07 2023-01-23 08:52:46.325884+07 1419 days 16:40:13.119884
4 2019-03-06 20:12:33.206+07 2023-01-23 08:52:46.325884+07 1418 days 12:40:13.119884
... ... ... ...

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

Если дата, из которой вычитают, больше второй даты, то результат будет положительным. В противном случае результат принимает отрицательное значение:

SELECT p.purchase_date,
       current_timestamp,
       p.purchase_date - current_timestamp AS difference
  FROM purchase p
# purchase_date current_timestamp difference
1 2019-03-11 17:15:02.206+07 2023-01-23 09:06:45.122623+07 -1413 days -15:51:42.916623
2 2019-03-10 17:12:34.206+07 2023-01-23 09:06:45.122623+07 -1414 days -15:54:10.916623
3 2019-03-05 16:12:33.206+07 2023-01-23 09:06:45.122623+07 -1419 days -16:54:11.916623
4 2019-03-06 20:12:33.206+07 2023-01-23 09:06:45.122623+07 -1418 days -12:54:11.916623
... ... ... ...

Складывать даты между собой нельзя:

SELECT p.purchase_date,
       current_timestamp,
       p.purchase_date + current_timestamp
  FROM purchase p
error: operator does not exist: timestamp with time zone + timestamp with time zone

9.8 Ввод времени с часовым поясом

9.10 Временные интервалы