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

mftmpeh8  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(276)

我在一个mysql表中循环各种日期。但不超过一年前的今天。我想数一数二。所以如果两个日期之间的间隔超过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();

我不知道怎么数日期。日期差异?如何在循环中获取日期?
天是日期时间0000-00-00:00:00

xpcnnkqh

xpcnnkqh1#

我们可以保存当前行的日期值,在处理下一行时,我们可以计算日期之间的天数。
在php5.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;
    }

相关问题