只要时间是00:00:00,日期比较就可以了

时间:2013-07-23 09:21:17

标签: php date datetime for-loop while-loop

这是我的事件脚本,它会在接下来的7天内完成预约,看起来工作正常,但只有一种情况........日期和时间以日期时间格式保存在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>';
    //

2 个答案:

答案 0 :(得分:1)

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

您可以使用DATE() MySql函数来比较苹果和苹果来修复比较:

WHERE DATE(datedroppingoff) = '$theday' OR DATE(datepickingup) = '$theday'

还有其他方法可以做到这一点,例如

WHERE DATEDIFF(datedroppingoff, '$theday') = 0 OR ...

如果您手边有$nextday值,您也可以

WHERE (datedroppingoff >= '$theday' AND datedroppingoff < '$nextday') OR ...

答案 1 :(得分:0)

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

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

WHERE datedroppingoff > '$theday' AND datedroppingoff < '$theday'+1

另一种选择是将日期和时间存储在单独的数据库字段中。这样就可以简化SQL查询。

祝你好运。