it is possible, but your example data either doesn't stack up or your description isn't quite complete enough
e.g.
between 8:55 and 9:01 there are three records that fit (A, B and C), you say 1
between 9:06 and 9:08 there are two records that fit (C and D), you say 1
between 10 and 12 there are two records that fit, C is departing, E is arriving, you say 1
you have gaps in your timeline between 9:01 and 9:05 (should be two (B & C))
the basic criteria would be
Arrivaltime<=TimeMax AND DepartureTime>=TimeMin
You have varying periods, presumable based on arrival and departure times. I'm winging this bit since not sure about your data or description (minTime includes arrival and departure times) but for this you would need to get all your times into one column (use a union query if they are in separate columns)
Code:
SELECT arrivalTime as ATime FROM myTable
UNION SELECT DepartureTime FROM myTable
note this will remove duplicate arrival or departure times
call this Uqry
then based on Uqry use a cartesian query to find the next highest value as your maxTime
Code:
SELECT A.Atime as TimeMin, Min(B.Atime) as TimeMax
FROM Uqry A, UqryB
WHERE B.ATime>=A.Atime
GROUP BY A.Atime
call this Cqry
Finally you can use a third cartesian aggregate query based on the second query and your arrivals/departures table and utilising the basic formula as a criteria
Code:
SELECT Date, TimeMin, TimeMax, count(*) as NBAircraft
FROM myTable, Cqry
WHERE Arrivaltime<=TimeMax AND DepartureTime>=TimeMin
GROUP BY Date, TimeMin, TimeMax
HAVING count(*)>0
ORDER BY Date, TimeMin