mysql - MySQL如何比较两个日期

标签 mysql sql

我正在尝试创建一个报告函数,我在我的数据库中存储了一些具有特定值 (closeDate) 的数据,该值只能是第 7 位或第 21 位,这是我的表的示例:

Table Example

我想做的是每 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 条件中的子句。它同时具有 ORAND,因此它可能不会像您预期的那样被解释。

我会尝试这样的事情:

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/

相关文章:

php - MySQL 半正矢公式中的语法错误

mysql - 嵌套集 - 自下而上的方法

mysql - 将 MySQL 代码转换为 Access SQL

sql - 文本还是 varchar?

mysql - ISCO/国际标准职业分类的 SQL 表设计

sql - Postgres : filter out some results with join

php - 如何在mysql中选择前10条记录

mysql - 如何使用 vb.net 防止 MySQL 数据库注入(inject)攻击?

java - Hibernate标准如何获取具有最大列值的行

SQL SERVER 计算一天的一条记录