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

私の問題は、特にデータベースでデータを取得する際に、これらのコードを正しく取得する方法です。他のすべての終了日と開始日を検索する同じ部屋での検索を改善する方法。

4

1 に答える 1

1

MySQL DateTimeフィールドを使用している場合は、DBからフェッチした文字列を、strtotimeやPHPの他の日付関数などで計算できるものに変換できる必要があります。

他の可能性は、SQLで直接計算することです。

于 2013-01-21T23:58:55.840 に答える