每当我使用 OR
在我的查询所处的条件下 date_format()
它在工作,但当我使用 AND
很好用。
真查询:
SELECT * FROM `tbl_inquiry_trans`
WHERE date_format(follow_updatetime,'%Y-%m-%d') >= '2018-08-02'
AND date_format(follow_updatetime,'%Y-%m-%d') <= '2018-08-02'
AND emp_id=2 or user_id=2
上面的查询应该显示特定的日期数据,但它显示的是所有日期数据。
测试查询:
SELECT * FROM `tbl_inquiry_trans`
WHERE date_format(follow_updatetime,'%Y-%m-%d') >= '2018-08-02'
AND date_format(follow_updatetime,'%Y-%m-%d') <= '2018-08-02'
AND emp_id=2
当我使用 AND
它显示了预期的日期数据,但我想使用 OR
在 where
条款。
2条答案
按热度按时间g6ll5ycj1#
这个
and
逻辑运算符的优先级高于or
操作员(即。,and
表达式在or
表达式,就像在计算算术表达式中的加法之前计算乘法一样)。为了达到你想要的行为,你需要围绕着这个世界的两边or
带圆括号的运算符:fhity93d2#
和@mureinik的回答一样,只是我觉得你不需要把那些电话给我
DATE_FORMAT
,因为在mysql中,可以直接将日期与字符串文本进行比较。因此,以下内容就足够了:上面的逻辑检查
follow_updatetime
如果是在午夜或午夜之后,有哪个日期是相配的吗2018-08-02
或者在午夜之前2018-08-03
. 这将涵盖一整天的时间2018-08-02
. 这样做的版本比您所拥有的版本更可取,因为这样可以在follow_updatetime
列。