在“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/