Vous pouvez group by
la partie date de datetime et obtenez le maximum pour chaque jour.
select max(`datetime`)
from tablename
where `datetime` >= date(now())-interval '30' day
group by date(`datetime`)
Pour obtenir tous les champs de la table pour ces lignes, utilisez
select * from tablename where `datetime` in (
select max(`datetime`)
from tablename
where `datetime` >= date(now())-interval '30' day
group by date(`datetime`)
)