我需要在2012年12月到2017年11月之间循环。因此,起始月份为12,结束月份为11,起始年份为2012年,结束年份为2017年。
然后我查询日期格式为2014-03-27 00:00:00
的数据库我知道大约4年前我做过这样的事情,但现在似乎无法解决这个问题。 这就是我所拥有的:
$year_start = 2012;
$year_end = 2017;
$month_start = 12;
$month_end = 11;
$year = $year_start;
$month = $month_start;
$number_of_months = 3;
if ($month < 13 && $year < $year_end ) {
$between_year_month = $year.'-'.$month;
//echo $between_year_month;
$query_total = "SELECT SUM(sales_points) FROM sales_list
WHERE user_id ='".$_SESSION['users_id']."'
AND sales_date BETWEEN '".$between_year_month."-01 00:00:00' AND '".$between_year_month."-30 23:59:59'";
echo $query_total;
$month++;
if($month == 13) {
$month = 1;
$year = $year + 1;
}
$between_year_month = $year.'-'.$month;
//echo $between_year_month;
}
非常感谢您的帮助。
答案 0 :(得分:6)
您最大的问题是您从未真正执行过您的查询。我还使用DateTime()
,DateInterval()
和DatePeriod()
简化了您的循环。
$start = new DateTime('2012-12-01');
$end = new DateTime('2017-11-01');
$interval = new DateInterval('P1M');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $dt) {
$first_of_month = $dt->modify('first day of this month')->format('Y-m-d H:i:s');
$end_of_month = $dt->modify('last day of this month')->format('Y-m-d H:i:s');
$query_total = "SELECT SUM(sales_points) FROM sales_list
WHERE user_id ='".$_SESSION['users_id']."'
AND sales_date BETWEEN '".$first_of_month ."'
AND '".$end_of_month ."'";
$result = mysqli_query($query_total, $conn);
$row = mysqli_fetch_row($result);
echo $row[0];
}