2016-09-01 90 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)); 

如果我有權訪問您的表結構,我會自己運行測試來確認,但我相信這是您正在查找的結果的正確語法。