我的表items
有一个date_due
日期,该日期存储时间戳。
我尝试选择当月和下一个11个月(一年)中的每条记录
SELECT * FROM items WHERE MONTH(date_due) BETWEEN MONTH(CURRENT_DATE()) AND MONTH(CURRENT_DATE() INTERVAL 11 MONTH)
,但是不幸的是,这不起作用。也许有人可以帮忙吗?
这里是一个小提琴,直到我开始工作: http://sqlfiddle.com/#!9/16bd5/5
什么不起作用:我不知道如何将记录限制为“从今天起的下11个月,包括今天的月份”
答案 0 :(得分:1)
您仅比较几个月就做错了。您还需要在哪里添加年份。
尝试下面的查询
SELECT * FROM item
WHERE (YEAR(date_due)>YEAR(CURRENT_DATE()) OR (YEAR(date_due)>=YEAR(CURRENT_DATE()) AND MONTH(date_due)>=MONTH(CURRENT_DATE())))
AND (YEAR(date_due)<YEAR(DATE_ADD(CURRENT_DATE(), INTERVAL 11 MONTH)) OR (YEAR(date_due)<=YEAR(DATE_ADD(CURRENT_DATE(), INTERVAL 11 MONTH)) AND MONTH(date_due)<=MONTH(DATE_ADD(CURRENT_DATE(), INTERVAL 11 MONTH))))