我在下面进行了查询,但它只获取一行,而数据库中此日期范围之间有两行:
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- 从: 24-03-2016 到: 31-03-2016
我想要的是,当用户从日期选择器中选择日期和日期并进行搜索时,它应该显示从日期到日期之间的所有记录。 例如,如果用户搜索日期 2016 年 3 月 1 日到 2015 年 3 月 31 日,数据库中有一行的起始日期和结束日期为 2016 年 3 月 25 日到 2016 年 4 月 10 日。它应该得到该行,因为它的日期位于搜索日期之间。
最佳答案
这有效。如果其他人可能需要这个答案,我将发布我的答案。
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
关于php - 在 mysql 中查找日期范围内的结果无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36158133/