我的 foos
表中有 date
字段 . 所以现在我需要从日期间隔中选择所有foos,但只比较月和日 .
例如,我需要在 7 Jan 2012
- > 28 Dec - 17 Jan
之前和之后10天选择所有foos . 或者周围 10 Jul 2009
- > 3 Jul - 17 Jul
. 它应该只根据所有年份的月份和日期进行选择 .
我原始而天真的解决方案
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;
2 回答
如果要查找所有日期日期
28 Dec 2011
和17 Jan 2012
,可以使用以下命令:对于更普遍的问题,我看到了两种方法 . 一个很容易写,但可能很慢,有一个很大的
foos
表: