计算天数,在MySQL循环中每隔5行添加注释

时间:2018-01-08 21:10:59

标签: php mysql loops date

我从MySQL表中循环各种日期。但距离今天不超过一年。 我想计算几天之间的天数。因此,如果它在日期之间超过5天,我想填写一个文本。 我不想每隔5行标记一次!我想在循环中的两个日期之间经过5天以上时加上标记。 像这样:

2018-01-02
2018-01-01
New period
2017-12-15
2017-12-14
2017-12-11
2017-12-08
New period
2017-12-02
New period
2017-11-16

//Fetch dates

    $sql = "SELECT * FROM d_days WHERE `f_code` = 4 AND MAX A YEAR AGO ORDER BY ID DESC";

    $result = $db->query($sql);

    if ($result->num_rows > 0) {

    // Count total days
    $row_cnt = $result->num_rows;
    printf("You have total %d dates.\n", $row_cnt);

        while($row = $result->fetch_assoc()) 

{

if more than 5 days {    ////   ?????
echo "New period";
}

echo "<tr><td>";
echo $row['d_day'];
echo "</td></tr>";

        }

    } else {

        echo "Did not find any dates";

    }

    $result->close();

我不知道如何计算日期。 DATEDIFF?如何在循环中获取日期?

d_day是datetime 0000-00-00 00:00:00

1 个答案:

答案 0 :(得分:1)

我们可以保存当前行的日期值,在处理下一行时,我们可以计算日期之间的天数。

使用PHP 5.3及更高版本,我们可以使用diff类的DateTime方法返回DateInterval类。然后使用days 方法属性获取整天的数量。

这样的事情:

    $d1 = new DateTime();

    while( $row = $result->fetch_assoc() )  {
       // convert MySQL date string to a DateTime object
       $d2 = new DateTime( $row['d_day'] );

       // calculate number of whole days between 
       $numdays = $d1->diff($d2)->days;

       if( $numdays > 5 )  {
          echo "New period";
       }

       // ... whatever else we need to do with the row 

       // before we start the next iteration of the loop
       // save the date from this row so we can compare it to the next row
       $d1 = $d2;
    }