Its the way the database is recorded.
As the database stores, first and last time recieved. Hence if an aircraft appears today and yesterday the row will store it was seen today and therefore won't appear as yesterday.
Unless you change the way the "Yesterday" query works to look at the first and last times in the Flights table, instead of the Aircraft table. Simples!!
I've posted the SQL to do this before, but here it is again (the important bit is the use of the Flights table in the WHERE statement):
SELECT DISTINCT
Aircraft.Registration AS "Reg",
Flights.Callsign AS "Flight ID",
Flights.Route AS "Route",
Aircraft.AircraftTypeSmall AS "ICAO Type",
Aircraft.Airline AS "Airline",
Aircraft.AircraftTypeLong AS "Aircraft",
Flights.StartAltitude AS "Start Altitude",
substr(Flights.StartTime,1,16) AS "Flight Started",
Flights.EndAltitude AS "End Altitude",
substr(Flights.EndTime,1,16) AS "Flight Ended",
Aircraft.ModeS AS "Mode S"
FROM
Aircraft
LEFT OUTER JOIN Flights ON (Aircraft.ModeS=Flights.ModeS)
WHERE
(date('now','-1 day') = substr(Flights.EndTime,1,4)||"-"||substr(Flights.EndTime,6,2)||"-"||substr(Flights.EndTime,9,2))ORDER BY
Aircraft.Registration,
Flights.EndTime,
Aircraft.ModeS