这是我的事件脚本,它会在接下来的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>';
//
答案 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查询。
祝你好运。