PHP循环数月,从12月开始

时间:2014-03-26 23:38:45

标签: php mysql date loops if-statement

我需要在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;

}

非常感谢您的帮助。

1 个答案:

答案 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];
}