Splitting the date and time out in seperate fields has made this a messy procedure.
If they were normal date / time types (i.e. combined) you could do this:
select * from test where date between '20030404 12:00 -500' and '20030605 12:00 -500';
Maybe a union?
But I'd fix the schema to store date and time together. It's far easier to process these things when they're merged into one field.