showdate
是日期時間字段 - 以下sql返回所有行,不僅是日期晚於2016-08-31的行。MySQL日期大於返回所有行
SELECT * FROM shows WHERE showdate > '2016-08-31'
我通過創建unixdate領域,使得這樣的查詢做了一個解決辦法:
SELECT * FROM shows WHERE udate >1472626800
但是,從我讀,前者應該工作,我很好奇,爲什麼它沒有。
showdate
是日期時間字段 - 以下sql返回所有行,不僅是日期晚於2016-08-31的行。MySQL日期大於返回所有行
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
哪個是真正的隨時隨地Z是真實的,即使X和Y是假的。
爲了解決這個問題,加括號明確地覆蓋默認的布爾運算優先級:
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
我必須爲我的過濾器使用錯誤的sql,因爲當我這樣做時,日期過濾器失敗: SELECT * FROM顯示哪裏udate> 1472626800 AND showstate ='MO'或showstate ='KS' – ImproperUsername
show a示例請告訴我showdate的數據類型 – scaisEdge
好吧,這是一個愚蠢的,愚蠢的noob錯誤。這個SQL做我想要的:SELECT * FROM顯示哪裏udate> 1472626800和showstate IN('MO','KS')order by ASK – ImproperUsername
請添加表結構和數據。例如可能幾行。 –
在另一條評論中,您將顯示具有其他布爾術語的不同SQL查詢。當你問一個關於代碼的問題時,**發佈你有問題的代碼**,而不是其他代碼。 –