1

我正在开发一个露营地管理系统,并一直试图找出日期选择查询。

$sdate 是预订的开始日期 $edate 是预订的结束日期

我只是想找到日期之间当前未保留的站点。现在它工作得很好,除非有人想在某人离开的同一天预订,这被认为是因为有人“在”那个地方,但那天会离开,所以它不应该出现.

日期格式为 mm/dd/yyyy

数据库中的格式设置为date,设置为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_formate 函数将 varchar 数据类型转换为实际日期格式之前,结果不会显示。

于 2013-03-21T11:54:16.127 回答