when you use the BETWEEN operator the first precidate needs to be less than the second (order matters):DECLARE @Foo TABLE (TimeAndDate DATETIME)INSERT @FooVALUES('2012-08-25T11:00:00.000'), ('2012-08-25T12:30:00.000'),('2012-08-25T14:00:00.000'),('2012-08-26T12:30:00.000'),('2012-08-20T12:30:00.000')SELECT *FROM @FooWHERE TimeAndDate BETWEEN '2012-08-24' AND '2012-08-28'and CAST(TimeAndDate AS TIME) between CAST('12:20:00' AS TIME) and CAST('13:20:00' AS TIME)