Selektiere als ersten Wert eindeutige IDs (distinct). Als zweiter kommt eine korrelierte Subquery zum Einsatz. Die findet eingeschränkt auf die ID aus der Hauptquery alle Datensätze, die kleiner sind als dein Datum. Absteigend sortiert und limitiert auf 1 hast du dein Davor-Datum.
Danke.
Etwa so?
select datum from x
where id in
(
select distinct id from x
)
order by datum desc
limit 1,1