簡體   English   中英

MySQL日期大於返回所有行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM