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查询。当你问一个关于代码的问题时,**发布你有问题的代码**,而不是其他代码。 –