you will most likely need to create an events table that contains
ONLY reccurring events, and then do something like
SELECT * FROM recevents WHERE everyxday = $day or everyxmonth = $month or everynumweek = int($daynum/7)
Yah it will be a bit complicated but I suspect it would solve your problem.. you would just need to decide how many differetn types of reccuring events you have... ie. every 3rd week every 3rd wednesday every 2nd month etc etc and code your query to handle them...
[edit-- or instead of a seperate table you could add a "is_reccuring" column into your data table and then SELECT * FROM dates WHERE is_reccuring = 1 and (blah = blah or bleh = bleh or etc = etc) -- if you get the idea --]