2013-01-21 56 views
0

你好,我第一次問今年的問題。 請幫我我求你了。遍歷日期並獲得兩個日期之間的最低日差

我有這個保留表有startdate和enddate,現在我想遍歷他們,並注意他們與我當前的日期預訂不同的時間間隔。在我得到所有不同的時間間隔之後,我想要遍歷該時間間隔並獲得最近的日子。

最近的日子是0(enddate == startdate),因爲入住時間是固定的。

假設在一個房間裏已經預訂了一堆日期。

bookingstart = '2013-02-5 14:00:00' bookingend = '2013-02-7 14:00:00' 
bookingstart = '2013-02-13 14:00:00' bookingend = '2013-02-16 14:00:00' 
bookingstart = '2013-01-22 14:00:00' bookingend = '2013-02-23 14:00:00' 

現在,初始代碼是這樣的:

$newbookingstart = '2013-01-24 14:00:00' 
$newbookingend = '2013-01-27 14:00:00'; 

$sql = mysql_query("SELECT enddate, startdate FROM reservation WHERE rmlocation = 'RM24'"); 
if (!$sql) { 
exit('Error: ' . mysql_error()); 
} 

$diffInterval = array(); 


while ($row = mysql_fetch_array($sql)) { 

if ($row['enddate'] >= $newbookingstart && $newbookingend <= $row['stardate']) { 
    $diffInterval .= $row['startdate'] . $row['enddate'] . $row['rmlocation']; 
} 

} 
//Get the $diffInterval, traverse and get the lowest date interval posible 

我的問題是,如何在數據庫獲取數據得到這些代碼的權利更是如此。 如何提高我在同一個房間內搜索所有其他enddates和startdates的搜索。

回答

1

如果您使用的是MySQL DateTime字段,它應該能夠將您從數據庫中提取的字符串轉換爲您可以計算的內容,例如, strtotime和PHP的其他日期函數。

其他可能性是直接在SQL中計算。

+0

哦,我忘了我知道如何使用DateTime php函數減去diff時間。但我必須確保即時獲取數據,以便即時查詢如何遍歷並獲得可用空間。你如何在MySQL中做到這一點? –

+0

PHP目前僅從DB提供字符串,本機函數無法理解MYSQL數據類型。由於PHP是一種動態的,無類型的語言,或多或少,這種行爲是在常見的地方。 對於MYSQL,您可以將計算放在語句的WHERE子句中。有幾種函數可以計算日期(http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html)。只需改變你的狀況,你就可以得到所需的結果。 –