Какой удивительный пример того, почему эпоха Unix - такой плохой выбор для хранения дат и текстового представления числа при этом. Всегда храните даты / временные метки подходящего типа. При необходимости эпоху легко извлечь из даты, но вывод даты из эпохи - в общем, некрасивый. А фактическая временная метка еще ужаснее. Если вы используете версию 12, вы можете, по крайней мере, зафиксировать дату в самом столбце таблицы, без необходимости изменять код, уже используя существующий столбец. Создайте сгенерированный столбец, который выводит фактическую дату. (Угадайте, что это было бы интересное путешествие туда и обратно, если для даты будет определяться эпоха, а для данной эпохи - получить дату).
alter table items
add created_date date generated always as
('1970-01-01'::timestamp + (created::integer/ 86400) * interval '1 day')
stored;
Теперь этот запрос сводится к простому и прямому:
select i.created_date,count(*)
from my_schema.items i
where i.category = 'books'
group by i.created_date
order by i.created_date;
Он также имеет дополнительное преимущество, делая доступными все Postgres функции обработки даты.