【发布时间】:2021-07-06 23:44:40
【问题描述】:
我有以下查询,我确实了解正常的 IF 条件是如何工作的,但是下面的一个有点令人困惑,不知道它到底在做什么?
SELECT * FROM `client`
WHERE IF( date_due < due_date_none, date_due, due_date_none) < date(now())
&& DATEDIFF(NOW(), IF( date_due < due_date_none, date_due, due_date_none)) < 500
谁能告诉我 IF 条件在这里做什么?或者有没有更好更易读的方式来编写这个查询?
【问题讨论】:
-
对于
IF(),如果第一个参数为真则返回第二个参数,否则返回第二个参数。所以IF( date_die < due_date_none, date_due, due_date_none)将与date_due或due_date_none的值相同,具体取决于date_due是否小于due_date_none。 -
建议使用日期算术:
WHERE some_date > CURDATE() - INTERVAL 500 DAY -
@Jhecht 你想添加你的答案而不是评论
标签: mysql performance