最简单的部分:要找到同一天和同一个月的任何日期:
SELECT .... FROM .... WHERE
month(timefield)=month('2012-12-02 23:59:59')
and day(timefield) = day('2012-12-02 23:59:59)
一种混乱的方式,但它会(主要)工作是做一个
SELECT .... FROM .... WHERE
(month(timefield)=month('2012-12-02 23:59:59')
and day(timefield) = day('2012-12-02 23:59:59')) or
(month(timefield)=month(date_sub('2012-12-02 23:59:59' interval 1))
and day(timefield) = day(date_sub('2012-12-02 23:59:59') interval 1)) or
(month(timefield)=month(date_sub('2012-12-02 23:59:59' interval 2))
and day(timefield) = day(date_sub('2012-12-02 23:59:59') interval 2)) or
等等...
然后问题来了:闰年怎么办...我对此没有任何好的解决方案...如果您的种子日期是 2012 年 3 月 5 日,那么您只会回到 2012 年 2 月 28 日,但我想您希望数据回到 2011 年 2 月 27 日... 一种可能的解决方案是确保您始终将日期标准化为闰年,取回 8 天的日期并丢弃您不想要的前端。