Разница дат между двумя датами

Думаю, это можно упростить до чего-то вроде:

SELECT 
    t.id AS topic_id,
    CURRENT_DATE - t.created_at::date AS days_old
FROM topics t
ORDER BY t.created_at DESC

Также есть удобная функция reltime$time, которую можно использовать для получения относительного времени (хотя она более полезна для интервалов менее 30 дней, иначе она возвращает даты):

SELECT 
    t.id AS topic_id,
    t.created_at AS reltime$time
FROM topics t
ORDER BY t.created_at DESC