代码之家  ›  专栏  ›  技术社区  ›  PhilHarmonie

mysql-选择当前和下一个11个月

  •  -1
  • PhilHarmonie  · 技术社区  · 7 年前

    我的桌子 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个月,包括今天的月份”

    1 回复  |  直到 7 年前
        1
  •  1
  •   Bhavesh    7 年前

    你只拿几个月来做比较是错的。你还需要在其中添加年份。

    尝试下面的查询

    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))))