I have got date field in my foos table. So now I need to select all foos from date interval but comparing only month and day.
For example, I need to select all foos 10 days before and after 7 Jan 2012 -> 28 Dec - 17 Jan. Or week around 10 Jul 2009 -> 3 Jul - 17 Jul. It should select depending only on month and day through all years.
My raw and naive solution
SELECT b_date FROM foos
WHERE DAYOFYEAR(b_date) BETWEEN
DAYOFYEAR('2011-01-07' - INTERVAL 10 DAY) AND (DAYOFYEAR('2011-01-07' - INTERVAL 10 DAY) + 20)
OR DAYOFYEAR(b_date) BETWEEN
(DAYOFYEAR('2011-01-07' + INTERVAL 10 DAY) - 20) AND DAYOFYEAR('2011-01-07' + INTERVAL 10 DAY)
GROUP BY foos.id;
1 Answer