每当我在 where 条件下使用 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
时,它会显示预期日期数据,但我想在 where
子句中使用 OR
。
最佳答案
and
逻辑运算符的优先级高于 or
运算符(即,and
表达式在 or
表达式之前计算,类似于在算术表达式中计算加法之前先计算乘法)。为了实现您想要的行为,您需要包围 or
的两侧带括号的运算符:
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) -- Here
关于MySQL : date format not working with OR in where condition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51646923/