首页 > 解决方案 > 不计入 0000-00-00 的 PHP mysql 查询

问题描述

我有 4 个日期需要计算,第一个日期需要等于 $_POST,其他 3 个不应算作0000-00-00日期。

我试过这个查询:

$sql_list = "SELECT Agent,count(datum_obrade) as obrada, 
count(datum_kontakta) as kontakti,
count(datum_vracanja) as zadrzani,
count(datum_terminacije) as terminacija from wb_base WHERE datum_obrade = '".$_POST["From"]."' 
group by Agent";

问题是这count()将算作0000-00-00日期(我的列是 PHPMyAdmin 设置为 DATE)我注意到如果我NULL在 DB 中手动将日期设置为查询不会计算它,但问题是我的 jquery 日期选择器不会返回NULL到 db如果它是空的。我也在这里问过这个问题

那么如何设置这个查询来计算所有不是 0000-00-00 的日期。如果我在AND之后添加,WHERE则查询需要匹配 3 个条件。此外,如果我使用OR它仍然会计数错误。

标签: phpmysqlmysqliphpmyadmin

解决方案


尝试这个

sql_list = "SELECT Agent,count(datum_obrade) as obrada, 
count(case when datum_kontakta>0 then 1 end) as kontakti,
count(case when datum_vracanja>0 then 1 end) as zadrzani,
count(case when datum_terminacije>0 then 1 end) as terminacija from wb_base WHERE datum_obrade = '".$_POST["From"]."' 
group by Agent";

case子句过滤掉所有不是>0. 在这些情况下,一个null值被发送到它不会得分的count()函数。所以最后只计算“有效”日期。


推荐阅读