Actually its not strange at all. First, you have to understand that Access stores Date/Time values as a Double precision number where the integer portion is the number of days since 12/30/1899 and the decimal portion is a fraction of a day (so 6AM is .25)
So if you enter criteria as
Between #9:00:00 PM# And #11:00:00 PM#, it will look for records with a 0 date (i.e. 12/30/1899). Similarly, if you filter by date and use BETWEEN #4/1/15 AND #4/30/15# it will not include records for 4/30/15 9:00 AM. Because the criteria is assuming no decimal
value, so its ignoring everything after 4/3/15 00:00AM.
When you work with Pivot Tables, Crosstab queries or Reports, the wizard to create those items ask what interval you organize the data on. So the wizards will, behind the scenes< parse out the time value
if that's what you select. In other words, Access does the heavy lifting for you.
Once you understand how datetime values work and how Access does a lot of the work for you, it really hits how powerful Access is. If you you tried to write a C# program to do the same thing, it
would take a LOT of coding.