两个字段中两个日期之间的日期

Posted

技术标签:

【中文标题】两个字段中两个日期之间的日期【英文标题】:date between two dates in two fields 【发布时间】:2017-01-29 04:25:18 【问题描述】:

我在酒店领域工作。我为每个酒店和每个房间创建了库存页面。

在我用开始日期和结束日期创建的数据库的数据结构中。在库存时,我们会在日期之间传递记录。

SELECT `crs_room_type_detail`.*, `crs_room_type`.`room_type_name`
FROM (`crs_room_type_detail`)
JOIN `crs_room_type` ON `crs_room_type_detail`.`room_type_id` = `crs_room_type`.`room_type_id`
WHERE `crs_room_type_detail`.`hotel_id` =  '4'
AND `crs_room_type_detail`.`sdate` >=  '2016-09-21'
AND `crs_room_type_detail`.`edate` <=  '2016-10-04'
GROUP BY `crs_room_type_detail`.`room_type_id`

这是获取结果的查询。 对于我们有日期:2016 年 9 月 20 日和日期:2016 年 9 月 30 日的房间,这个标准不起作用,假设我改变条件,如 sdate edate >= ' 2016-10-04' 它不适用于其他一些标准

【问题讨论】:

对于我们有 sdate : 2016-09-20 和 edate : 2016-09-30 的房间。它不起作用,因为查询是 sdate >= '2016-09-21'`所以2016-09-20错过了 我想在两个日期之间 【参考方案1】:

试试这个

 SELECT `crs_room_type_detail`.*, `crs_room_type`.`room_type_name`
    FROM (`crs_room_type_detail`)
    JOIN `crs_room_type` ON `crs_room_type_detail`.`room_type_id` = `crs_room_type`.`room_type_id`
    WHERE `crs_room_type_detail`.`hotel_id` =  '4'
    AND `crs_room_type_detail`.`sdate` BETWEEN '2016-09-21' AND '2016-10-04'
    AND `crs_room_type_detail`.`edate` BETWEEN '2016-09-21' AND '2016-10-04'
    GROUP BY `crs_room_type_detail`.`room_type_id`

【讨论】:

【参考方案2】:

使用 between 获取日期范围:

SELECT `crs_room_type_detail`.*, `crs_room_type`.`room_type_name`
FROM (`crs_room_type_detail`)
JOIN `crs_room_type` ON `crs_room_type_detail`.`room_type_id` = `crs_room_type`.`room_type_id`
WHERE `crs_room_type_detail`.`hotel_id` =  '4'
AND `crs_room_type_detail`.`sdate` between  '2016-09-21' and '2016-10-04'
GROUP BY `crs_room_type_detail`.`room_type_id`

【讨论】:

【参考方案3】:

试试下面的脚本:

SELECT `crs_room_type_detail`.*, `crs_room_type`.`room_type_name`, date
FROM (`crs_room_type_detail`)
JOIN `crs_room_type` ON `crs_room_type_detail`.`room_type_id` =
`crs_room_type`.`room_type_id`
WHERE `crs_room_type_detail`.`hotel_id` =  '4'
AND date(`crs_room_type_detail`.`sdate`) >=  date('2016-09-21')
AND date(`crs_room_type_detail`.`edate`) <=  date('2016-10-04')
GROUP BY `crs_room_type_detail`.`room_type_id`

【讨论】:

以上是关于两个字段中两个日期之间的日期的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中两个日期字段之间的平均时间?

Access 2007:查询两个短日期值之间的 DateTime 字段

codeigniter中两个日期之间的差异

在html中计算两个输入类型=“日期”之间的天数[重复]

mysql两个日期计算天数

sql中查出两个日期之间的数据