Możesz group by
data część daty i godziny i uzyskaj maksimum dla każdego dnia.
select max(`datetime`)
from tablename
where `datetime` >= date(now())-interval '30' day
group by date(`datetime`)
Aby pobrać wszystkie pola z tabeli dla takich wierszy, użyj
select * from tablename where `datetime` in (
select max(`datetime`)
from tablename
where `datetime` >= date(now())-interval '30' day
group by date(`datetime`)
)