Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 只要时间是00:00:00,日期比较就可以工作_Php_Date_Datetime_For Loop_While Loop - Fatal编程技术网

Php 只要时间是00:00:00,日期比较就可以工作

Php 只要时间是00:00:00,日期比较就可以工作,php,date,datetime,for-loop,while-loop,Php,Date,Datetime,For Loop,While Loop,这是我的事件脚本,它将在接下来的7天内完成约会,看起来工作正常,但只有在一种情况下……。日期和时间以datetime格式保存在mysql数据库中,因此2013-12-23 08:30:00。我的脚本每天打印一次,并为正在下车或取东西的客户查找当天的约会。mysql在数据库中查找,并将客户与发送或接收字段匹配到打印的日期,并将其添加到日期下方的div中 我遇到的问题是,如果时间设置为00:00:00以外的任何时间,它不会在当天接收该客户。如何使比较忽略时间而只使用日期 //

这是我的事件脚本,它将在接下来的7天内完成约会,看起来工作正常,但只有在一种情况下……。日期和时间以datetime格式保存在mysql数据库中,因此2013-12-23 08:30:00。我的脚本每天打印一次,并为正在下车或取东西的客户查找当天的约会。mysql在数据库中查找,并将客户与发送或接收字段匹配到打印的日期,并将其添加到日期下方的div中

我遇到的问题是,如果时间设置为00:00:00以外的任何时间,它不会在当天接收该客户。如何使比较忽略时间而只使用日期

            // Date box container
    echo '<div class="dateboxcontainer">';

    // Loop through and create a date for the next 7 days
    $days = new DatePeriod(new DateTime, new DateInterval('P1D'), 7); 
    foreach ($days as $day) {
    echo '<div class="datebox">';
    echo '<div class="topdate">';

          echo strtoupper($day->format('D d')) . PHP_EOL;
    echo '</div>';  

              // Get the names for each day
          $theday = strtoupper($day->format('Y-m-d'));    
          $sqldate = <<<SQL
        SELECT *
        FROM `jobdetails`
        WHERE datedroppingoff = '$theday' OR datepickingup = '$theday'
    SQL;
    if(!$resultdate = $db->query($sqldate)){
        die('There was an error running the query [' . $db->error . ']');
    }
    while($rowdate = $resultdate->fetch_assoc()){
        echo $rowdate['name'];
            }
         //

    echo '</div>';
    }  
    echo '</div>';
    //
//日期框容器
回声';
//循环浏览并创建未来7天的日期
$days=新的日期周期(新的日期时间,新的日期间隔('P1D'),7);
foreach($天作为$天){
回声';
回声';
echo strtoupper($day->format('D')).PHP\u EOL;
回声';
//得到每天的名字
$theday=strotupper($day->format('Y-m-d'));
$sqldate=fetch_assoc()){
echo$rowdate['name'];
}
//
回声';
}  
回声';
//

您现在正在做的是将日期/时间值与日期值进行比较。如果时间部分不是午夜,则此比较将失败

您可以通过使用MySql函数将苹果与苹果进行比较来修复比较:

WHERE DATE(datedroppingoff) = '$theday' OR DATE(datepickingup) = '$theday'
例如,还有其他方法可以做到这一点

WHERE DATEDIFF(datedroppingoff, '$theday') = 0 OR ...
如果手头有
$nextday
值,您也可以这样做

WHERE (datedroppingoff >= '$theday' AND datedroppingoff < '$nextday') OR ...
其中(datedroppingoff>='theday'和datedroppingoff<'nextday')或。。。

您正在mySQL中存储特定的时间和日期,但只在SQL查询中搜索日期。由于mySQL不理解您想要搜索完整的一天或特定的时间点之间的区别,mySQL假设您在0:00:00搜索这一天

您有几个选项,可以搜索一个时间段(伪代码,自己检查边界):

其中datedroppingoff>“$theday”和datedroppingoff<$theday”+1
另一个选项是将日期和时间存储在单独的db字段中。这样可以使SQL查询更简单


祝你好运。

非常感谢!第一个完成任务:)
WHERE datedroppingoff > '$theday' AND datedroppingoff < '$theday'+1