I am not sure about this but I think you making it more complicated then I think it is. Given that you have your date in the format date I think you could write:
SELECT * FROM table WHERE date > '2002-01-01') AND date < '2002-01-31';
Maybe you have to write:
SELECT * FROM table WHERE (date > '2002-01-01') AND date < '2002-01-31');
This would give you all rows between 1 January and 31 January I think. If not I also would like to know :-)
/Andrin