Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL统计并显示范围内的所有日期_Php_Mysql_Datetime_Between_Date Range - Fatal编程技术网

Php MySQL统计并显示范围内的所有日期

Php MySQL统计并显示范围内的所有日期,php,mysql,datetime,between,date-range,Php,Mysql,Datetime,Between,Date Range,我对MySQL查询有问题。我有下表: [id] [自]日期Y-m-d [天]整数 [...] 我有两个PHP变量$start和$end。我想得到这个结果,例如: $start=2012-19-03 $end=2012-24-03 $result=数组 [0]=>从开始到开始之间的“2012-19-03”行数+间隔天数 [1] =>从开始到开始之间的“2012-20-03”行数+间隔天数 [2] =>从开始到开始之间的“2012-21-03”行数+间隔天数 [4] =>从开始到开始之间的“2012

我对MySQL查询有问题。我有下表:

[id] [自]日期Y-m-d [天]整数 [...] 我有两个PHP变量$start和$end。我想得到这个结果,例如:

$start=2012-19-03 $end=2012-24-03 $result=数组 [0]=>从开始到开始之间的“2012-19-03”行数+间隔天数 [1] =>从开始到开始之间的“2012-20-03”行数+间隔天数 [2] =>从开始到开始之间的“2012-21-03”行数+间隔天数 [4] =>从开始到开始之间的“2012-22-03”行数+间隔天数 [5] =>从和从之间的“2012-23-03”行数+间隔天数 [6] =>从开始到开始之间的“2012-24-03”行数+间隔天数 } 到目前为止,我每天都在做一个while循环查询,但应该有更好的方法。我的问题是分组方式,其中的日期不存在于数据中

更详细的示例:

样本数据:

id,从,天 1, 2012-15-03, 2 2, 2012-15-03, 5 3, 2012-13-03, 20 4, 2012-16-03, 1 预期结果:

$start=2012-11-03 $end=2012-19-03 $result=数组 [0]=>0行(以DB为单位),其中“2012-11-03”介于起始日期和起始日期+天之间-数据不匹配, [1] =>0行(以DB为单位),其中“2012-12-03”介于起始日期和起始日期+天之间-数据不匹配, [2] =>数据库中的1行,其中'2012-13-03'介于起始日期和起始日期+天数之间-id 3匹配, [3] =>1等等, [4] => 3, [5] => 4, [6] => 3, [7] => 2 像这样

我希望你能帮助我,
你好

我不确定你到底问了什么

但似乎您可以使用sum和if/else以及group by来实现:

如下图所示:

select sum(if( '2012-19-03' BETWEEN `from` AND date_Add(`from` , INTERVAL days DAY)),1,0)) as firstdaycount,
sum(if( '2012-20-03' BETWEEN `from` AND date_Add(`from` , INTERVAL days DAY)),1,0)) as secondaycount,
..
....
.....
......
.....
where [...]
Group By ...
如果您需要进一步帮助,请告诉我。

试试以下方法:

SELECT `from`, COUNT(*) TotalRows
FROM tableName
WHERE `from` <= date('$start') AND `from` >= date('$end')
GROUP BY `from`
ORDER BY `from`

那么,如果您知道between关键字,那么问题出在哪里呢?要在PHP变量$start和$end之间按天对这种数组进行排序和分组,您可以发布从数据库中获取的数组吗?还有select sql查询我没有查询,我要求one@Feryaz:?这意味着我需要在循环中构建查询,没有更灵活的吗?$start和$end变量并不总是相同的,也不总是有相同的天数。请尝试@johntotetwoo solution。不完全是你想要的吗?我不想让它们按from排序,它们应该按PHP变量的天数排序。好的,那么你说的PHP变量的天数是什么意思?你能再详细说明一下吗?谢谢..如果$start是'2012-19-03'而$end是'2012-20-03'。数组的第一个元素的行数应为'2012-19-03'介于from和from+INTERVAL days之间,第二个元素的行数应为'2012-20-03'介于from和from+INTERVAL days之间。这意味着它可以在$start和$end之间的天数内获得订单。通过从中删除订单,它是否满足您的要求?错误。它不考虑起始日和起始日+间隔日部分。