[英]MySQL date greater than returns all rows
showdate
是日期時間字段-以下sql返回所有行,不僅返回日期晚於2016-08-31的行。
SELECT * FROM shows WHERE showdate > '2016-08-31'
我通過創建unixdate字段並進行如下查詢來進行變通:
SELECT * FROM shows WHERE udate >1472626800
但是,根據我的閱讀,前者應該起作用,並且我很好奇為什么不起作用。
SELECT * FROM shows where udate > 1472626800 AND showstate = 'MO' OR showstate = 'KS'
請記住布爾表達式中的優先級規則。
X AND Y OR Z
這與:
(X AND Y) OR Z
即使X和Y為假,在Z為真的情況下也是如此。
要解決此問題,請顯式添加括號以覆蓋默認的布爾運算優先級:
X AND (Y OR Z)
可能您應該在日期中正確轉換您的字符串
SELECT * FROM shows WHERE showdate > str_to_date( '2016-08-31', '%Y-%m-%d');
或您的最后評論
SELECT * FROM shows
WHERE showdate > str_to_date( '2016-08-31', '%Y-%m-%d')
AND showstate IN ('MO','KS') order by showdate ASC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.