php - 在 mysql 中查找日期范围内的结果无法正常工作

标签 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- 从: 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/

相关文章:

PHP While循环将空白行添加到重复区域

php - 在 php 中使用 Websocket 向一组用户而不是所有用户显示消息

php - 带有 php 页面的不需要的 2 倍样式元素

php - mysql的sql_mode=ONLY_FULL_GROUP_BY的非聚合列

结果为多行的 MySQL JOIN 查询

MySQL。使用子查询创建 View 。多个表

mysql - 需要按不同值分组的一个 MySQL 列中不同值的总和

php - 使用 PHP/MySQL/Ajax 的队列表

mysql - 有没有办法在 SQL 中使用 json 对象

php - 在 yii 模型中自动输入值