U moet afkappen in de GROUP BY
ook:
SELECT created_at::date, COUNT(*)
FROM table_name
WHERE product_uuid = '586d8e21b9529d14801b91bd' AND
created_at > now() - interval '30 days'
GROUP BY created_at::date
ORDER BY created_at::date ASC;
Uw versie aggregeert op elke datum/tijd-waarde, maar toont alleen de datumcomponent.
Ik raad je ook aan om current_date
. te gebruiken in plaats van now()
dus de eerste date wordt niet ingekort.