查找mysql日期范围之间的结果无法正常工作

时间:2016-03-22 15:09:39

标签: php mysql

我在下面做了一个查询,但它只获取了一行,而数据库中的这个日期范围之间有两行:

SELECT * FROM resorts_seasonallevelpricingnew INNER JOIN resorts_resort ON
resorts_seasonallevelpricingnew.resortId = resorts_resort.resortId INNER JOIN 
resorts_roomtype ON
resorts_seasonallevelpricingnew.roomTypeId =  resorts_roomtype.roomTypeId WHERE   
resorts_seasonallevelpricingnew.resortId = 601 AND 
resorts_seasonallevelpricingnew.roomTypeId = '8' AND 
( ('2016-03-01 00:00:00' BETWEEN STR_TO_DATE(`fromDate`,'%Y-%m-%d') 
AND STR_TO_DATE(`toDate`,'%Y-%m-%d')) OR ('2016-03-31 00:00:00' 
BETWEEN STR_TO_DATE(`fromDate`,'%Y-%m-%d') AND STR_TO_DATE(`toDate`,'%Y-%m-%d')) )

数据库中有两行具有以下日期,它应该同时获取它们: 1-从:15-03-2016到:23-03-2016 2-于:2016年3月24日至2016年3月31日

我想要的是当用户从日期选择器中选择和日期并搜索它时,它应该显示来自和迄今为止的所有记录。 例如,如果用户搜索了日期1-03-2016到31-03-2015,并且数据库中有一行,其中包含从25-03-2016到10-04-2016的日期和日期。它应该得到那一行,因为它到目前为止是在搜索日期之间。

1 个答案:

答案 0 :(得分:0)

这适用于。如果其他人可能需要这个,我会发布我的答案。

SELECT * FROM resorts_seasonallevelpricingnew 
INNER JOIN resorts_resort ON resorts_seasonallevelpricingnew.resortId = resorts_resort.resortId 
INNER JOIN resorts_roomtype ON resorts_seasonallevelpricingnew.roomTypeId = 
resorts_roomtype.roomTypeId 
WHERE resorts_seasonallevelpricingnew.resortId = 
601 
AND resorts_seasonallevelpricingnew.roomTypeId = '8' 
AND ( 
(STR_TO_DATE(`fromDate`,'%Y-%m-%d') BETWEEN '2016-03-01 00:00:00' AND 
'2016-03-31 00:00:00') 
OR (STR_TO_DATE(`toDate`,'%Y-%m-%d') BETWEEN 
'2016-03-01 00:00:00' AND '2016-03-31 00:00:00'))
ORDER BY 
resorts_seasonallevelpricingnew.fromDate