我正在尝试创建一个报告函数,我在我的数据库中存储了一些具有特定值 (closeDate) 的数据,该值只能是第 7 位或第 21 位,这是我的表的示例:
我想做的是每 22 次执行一次查询,以选择所有 Status = "Active"或 "On approve"且 CloseDate < to 22nd (Curdate) 的寄存器。我有这个查询,但是这个查询向我展示了与图像中完全一样的一切,我期望查询只向我展示来自 Id = 00001 和 00003 的数据,因为 Id 00002 CloseDate(2016-10-21) 它不是 < to 2016-09-22(当前日期)。
SELECT tbl_usuarios.Correo, tbl_alertas.Id, tbl_alertas.Purpose, tbl_alertas.Status, tbl_alertas.OpenDate, tbl_alertas.CloseDate, tbl_alertas.Owner, tbl_alertas.ValueStream, tbl_alertas.Family
FROM tbl_usuarios
INNER JOIN tbl_alertas ON tbl_usuarios.Nombre = tbl_alertas.Owner
WHERE STATUS = 'On approve' OR STATUS = 'Active' AND CloseDate < CURDATE()
我做错了什么?
最佳答案
您可能需要重新排列 WHERE 条件中的子句。它同时具有 OR
和 AND
,因此它可能不会像您预期的那样被解释。
我会尝试这样的事情:
WHERE (STATUS = 'On approve' OR STATUS = 'Active') AND CloseDate < CURDATE()
或者您可以使用 IN
简化此操作:
WHERE STATUS IN ('On approve', 'Active') AND CloseDate < CURDATE()
关于mysql - MySQL如何比较两个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39644724/