2013-07-23 73 views
0

這是我的事件腳本,拉出約會在接下來的7天,它似乎工作正常,但只有在一個條件........日期和時間以datetime格式保存在mysql數據庫中,所以2013-12-23 08:30:00。我的腳本每天都會打印出來,併爲那些正在丟棄或拿起東西的客戶找到當天的約會。 MySQL通過數據庫查找並匹配客戶,使其脫離或拾取字段到正在打印的日期,並將它們添加到日期之下的div中。日期比較工作只要時間是00:00:00

我遇到的問題是,如果時間設置爲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>'; 
    // 

回答

1

你現在正在做的是正確的比較日期/時間值只是日期值。如果時間部分不是午夜,那麼這種比較就會失敗。

您可以修復使用DATE() MySQL的功能與蘋果比較蘋果的比較:

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

還有其他的方法做同樣的,例如

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

如果你有一個$nextday價值在手,你也可以做

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

非常感謝!第一個工作:) –

0

Y ou正在mySQL中存儲特定的時間和日期,但只能在SQL查詢中搜索日期。由於mySQL並不瞭解您想要搜索整天或特定時間點的區別,因此mySQL假定您正在查找時間爲0:00:00的那一天。

您有幾種選擇,你可以搜索一個時間段(僞代碼,檢查邊框自己):

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

另一種選擇是存儲在單獨的數據庫字段的日期和時間。這樣你可以保持你的SQL查詢更簡單。

好運。