2016-09-01 73 views
0

我想选择SQL query在月份和年份之间的条件。在我的数据库中有字段名称月和年为商店产生月份和年份的输入。现在我想搜索产生十二月,2015年投入2016年8月 这是我sqlphp sql查询月份和年份之间选择

SELECT * FROM tbl_produce p WHERE p.status =0 AND ((p.months >='12' 
AND p.years>='2015') AND (p.months <='8' AND p.years<='2016)) ; 

但结果返回NULL,我知道我的查询不正确的,但如何纠正呢?

+0

您应该删除多年来的'>'/'<',并且在日期中使用OR而不是AND。例如(P.Years = 2015 AND P.Months = 12)或(P.Years = 2016 AND P.Months <= 8))' – ZLK

回答

0

为什么不把日期栏设计为日期?

如果你想保持当前的设计,试试这个:

SELECT * 
FROM tbl_produce 
WHERE status = 0 
AND concat(years, if(months > 9, months, concat('0', months))) 
    BETWEEN '201512' AND '201608' 

OR

SELECT * 
FROM tbl_produce 
WHERE status = 0 
AND (
    (years = 2015 AND months = 12) 
    OR 
    (years = 2016 AND months < 9) 
) 
0

你的SQL查询正在寻找的结果,其中p.months等于两个12和8,并且其中p年等于2015年和2016年。

要达到您要查找的结果,请用OR替换两组括号之间的AND,如下所示:

SELECT * FROM tbl_produce p WHERE p.status =0 AND ((p.months >='12' AND p.years = '2015') OR (p.months <='8' AND p.years = '2016)); 

如果我有权访问您的表结构,我会自己运行测试来确认,但我相信这是您正在查找的结果的正确语法。