在数据库中,我有以下数据:
super.showAd()
如果我从&01; 08/01/2016 00:00:00'至&00; 09/05/2016 00:00:00'它给了我以上的结果。
但问题是,如果我从< 08/01/2016 00:00:00'到2016年9月2日00:00:00'它没有向我显示结果。
我的查询是:
From date : 2016-09-01 06:00:00
To date : 2016-09-04 08:00:00
答案 0 :(得分:0)
首先,学会使用正确的显式JOIN
语法。简单的规则:从不在FROM
子句中使用逗号;始终使用JOIN
。
重叠的逻辑不正确。见下面的最后两行:
SELECT *
FROM car_availability c JOIN
car_trip_availability ct
ON c.car_id = ct.car_id
WHERE c.car_category_id IN ($car_category_id_list) AND
c.is_booked = :is_booked AND
ct.trip_type_id =:trip_type_id AND
ct.from_location_id =:from_location_id AND
ct.to_location_id = :to_location_id AND
c.from_date_time <= :to_date_time AND
c.to_date_time >= :from_date_time;
如果第一个在第二个结束之前开始而第一个在第一个结束之后结束,则两个周期重叠。这似乎是你想要的逻辑。
您还应该注意$car_category_id_list
。您不能将列表作为参数传递。
答案 1 :(得分:-1)
只需尝试一下!
SELECT * FROM tablename 在哪里,栏目BETWEEN&#39; 2012-12-25 00:00:00&#39; AND&#39; 2012-12-25 23:59:59&#39;
记录[Between] 来自:&#39; 2012-12-25 00:00:00&#39; 致:&#39; 2012-12-25 23:59:59&#39;