mysql - 我在 "AND"中使用 "Case When"时从数据库检索数据时出错

标签 mysql

在“Case When”中使用“AND”时,我从数据库检索数据时出错 我试图仅检索“打开”日期大于“当前日期+10 天”的数据,并且项目状态应为“未关闭”,我在“情况”中使用“和”,但它仍然显示不关闭和关闭状态。 任何帮助将不胜感激

SELECT
    Open,
    `TE Due Date`,
    `Certifier Due Date`,
    Close,
    ProjectStatus,
    case when ((DATE_ADD(Open, INTERVAL 10 DAY) > CURDATE()) and (ProjectStatus="Not Closed")) then "10 days passed from open date" else "" END AS "Open Status"
FROM 
    TCB
where DATE_ADD(Open, INTERVAL 10 DAY) > CURDATE() 
order by Open

最佳答案

您的病情与您对病情的描述不符;您说您希望“开放日期大于当前日期 +10 天,但 DATE_ADD(Open, INTERVAL 10 DAY) > CURDATE() 是“大于当前日期减 10 天”。

使用Open > DATE_ADD(CURDATE(), INTERVAL 10 DAY)反而;它不仅反射(reflect)了您建议的条件,而且还应该更快,因为它对不随行变化的值进行操作(即 DATE_ADD 应该只为每个查询执行计算一次)。

编辑:但是,从“距离开放日期已过去10天”来看,这可能是您需要的实际情况Open < DATE_SUB(CURDATE(), INTERVAL 10 DAY) .

您的原始状态实际上意味着“在过去十天内打开”。

关于mysql - 我在 "AND"中使用 "Case When"时从数据库检索数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52340229/

相关文章:

mysql - 对包含零的列进行条件 ORDER BY

php - 如何替换 php+mysql 中现有行的特定字段?

MySQL - 尝试获取与重复外键匹配的多行作为附加列

mysql - 日期范围问题

mysql - SQL 在 2 列中选择不同的值,无论其顺序如何?

php - 在 PHP 中针对数组选择的表单

java - 使用问题?从 Java 更新时用于 MySQL 存储过程的通配符

php - 为什么mysql HEX改变二进制列的大小写?

php - 如何将逗号分隔的字符串转换为单列?

mysql - 针对特定需求的 NoSQL 推荐