1

私はキャンプ場管理システムに取り組んでおり、日付選択クエリを理解しようとしています。

$sdate は予約の開始日です $edate は予約の終了日です

日付の間に現在予約されていないサイトを見つけようとしているだけです。現在のところ、かなりうまく機能していますが、誰かが出発するのと同じ日に予約したい場合を除いて、誰かがその場所に「いる」ため予約されたと見なされますが、その日に出発するので表示されません。 .

日付形式は mm/dd/yyyy です

データベースの形式は日付に設定されておらず、同じ形式の varchar に設定されています。

$searchSite= $wpdb->get_results("SELECT *
        FROM wp_campground_sites
        WHERE wp_campground_sites.id
        NOT IN
        (
            SELECT wp_campground_sites.id
            FROM wp_campground_sites
            JOIN wp_campground_reservations
            ON wp_campground_sites.id = wp_campground_reservations.site_id
            WHERE
            (
             '$edate' between reservations.sdate and reservations.edate
             OR
            '$sdate' between reservations.sdate and reservations.edate
            OR
            reservations.sdate between '$sdate' and '$edate'
            )
       ");
4

1 に答える 1

1

varchar 文字列を日付形式に変更し、次のように比較する必要があります

select date_format(str_to_date('12/31/2011', '%m/%d/%Y'), '%Y%m');

文字列を日付と比較するため、date_format 関数を使用して varchar データ型を実際の日付形式に変換するまで、結果は表示されません。

于 2013-03-21T11:54:16.127 に答える