MySQL : date format not working with OR in where condition

标签 mysql sql select logical-or logical-and

每当我在 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/

相关文章:

mysql - 运行多线程代码规范时锁定等待超时

php - Mysql - 使用 select 和 PDO 进行条件插入查询

sql - 按最大条件匹配排序

jquery - 单击后通过 ajax 延迟加载单个选择框选项的正确方法

javascript - Php-javascript 代码只工作一次

PHP 不在 MySQL 查询后重定向

php - 即使用户没有从所有选择框中进行选择,如何显示结果?

sql - 使用参数创建 SQL View

mysql - 为多表插入操作创建触发器

mysql - SQL作为IF语句的结果返回一个字符串