完成新手和全新手,所以提前道歉......
假设我在SQL中有一个包含三列的表:name; datein;约会。我在表中有2条记录。
对于每个单独的记录,我想回复一下来自' datein'到前一天' dateout'。
所以例如......
数据库中的记录1是JohnDoe,2017-03-27,2017-03-30
数据库中的记录2是JaneDoe,2017-04-10,2017-04-12
我想回应结果:
2017年3月27日
2017年3月28日
2017年3月29日
2017年4月10日
2017年4月11日
搜索但无法找到能够做到这一点的事情...希望有人可以提供帮助:)
答案 0 :(得分:1)
虽然可能存在纯粹的MySQL解决方案,但这里是使用DateTime
类的PHP替代方案。将$start_date
和$end_date
设置为数据库中的值,然后运行!循环会自动将日期递增1,直到您到达最终日期。
$start_date = "2017-03-27";
$end_date = "2017-03-30";
$start = new DateTime($start_date);
$end = new DateTime($end_date);
while ($start < $end) {
echo $start->format("Y-m-d")."\n";
$start->modify("+1 day");
}
输出:
2017年3月27日
2017年3月28日
2017-03-29
答案 1 :(得分:1)
你只需要使用2个循环。 1获取结果另一个检查条件和回声。 第一个循环这是如果你使用PDO然后代码是正确的,否则如果你使用mysql旧方式然后它将是&#34; while($ row = mysql_fetch_assoc($ result))&#34;
$i=0;
while ($row = $query->fetch(PDO::FETCH_ASSOC)){
$date1=$row[$i]['datein'];
$date2=$row[$i]['dateout'];
// we check that entry date is not bigger then the exit day
IF ($date1 > $date2){
echo 'error in date entry date bigger then exit date';
//continue will bypass the next loop and go to the next row
continue;
}
while ($date1 != $date2){
echo $date1;
$date1=date('Y-m-D',strtotime($date1 . ' + 1 day);
}
$i++;
}
希望它可以帮到你