我在下面做了一个查询,但它只获取了一行,而数据库中的这个日期范围之间有两行:
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的日期和日期。它应该得到那一行,因为它到目前为止是在搜索日期之间。
答案 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