mysql - 在“Case When”中使用“AND”时从数据库中检索数据时出错
问题描述
我在“Case When”中使用“AND”时从数据库中检索数据时出错我试图仅检索“Open”日期大于“当前日期 +10 天”且项目状态应为“未关闭”,我在“Case when”中使用了“and”,但它仍然显示未关闭和关闭状态。任何帮助将不胜感激
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)
;它不仅反映了您提出的条件,而且还应该更快,因为它对不随行变化的值进行操作(即 DATE_ADD 应该只为每次查询执行计算一次)。
编辑:但是,从“从开放日期过去 10 天”来看,这可能是您需要的实际条件Open < DATE_SUB(CURDATE(), INTERVAL 10 DAY)
。
您的原始条件实际上意味着“在过去十天内打开”。
推荐阅读
- ruby-on-rails - Heroku 不适用于 rails 6
- ios - 使用 coremltools 3 将 TF 2.* keras 模型转换为 iOS 12 的 mlmodel
- reactjs - Gatsby V3 在 deletePage 后不在 onCreatePage 函数中创建页面
- python-3.x - 我无法让 Speech_Recognition Python3 模块响应用户在我的 VA 项目中所说的内容
- codeigniter - Codeigniter 3 分页仅显示第一页
- r - 最右边的非 NA 列创建组合列
- python - 从数据框行创建数据框
- powershell - 从 samaccountnames 列表中提取显示名称
- blockchain - “VM Exception while processing transaction: revert”,当运行chainlink节点并尝试部署TestnetConsumer合约时?
- maven - 从同一文件夹中的另一个 proto 文件导入 proto 文件