So..
select records where mydate between '2009-02-05 00:00:00' and '2009-02-05 23:59:59.999'
will return some of tomorrow's records?
That's wrong, and it's absurd naming the fraction 'milliseconds' when it's treated like that.
I am positive that before SQL 2000 that wasn't the case. Probably a bug that turned into a feature.