当前位置: 首页 > 知识库问答 >
问题:

MySQL是介于日期范围之间的日期

幸经艺
2023-03-14

我有一张表,上面有房间的开始和结束日期。我写了这个SQL:

SELECT ic.invoice_id,
       pccr.room_name,
       DATEDIFF(end, start) AS 'Total Days',
       pccr.start,
       pccr.end,
FROM partners_campuses_courses_rooms AS pccr
         JOIN invoices_courses AS ic ON pccr.course_id = ic.course_id
         JOIN invoices i on ic.invoice_id = i.invoice_id
WHERE pccr.deleted_at IS NULL
    AND pccr.end BETWEEN '2022-12-01' AND '2022-12-31'

这些房间在这段时间内是有效的。但是,当我这样过滤的时候,

SELECT ic.invoice_id,
       pccr.room_name,
       DATEDIFF(end, start) AS 'Total Days',
       pccr.start,
       pccr.end,
FROM partners_campuses_courses_rooms AS pccr
         JOIN invoices_courses AS ic ON pccr.course_id = ic.course_id
         JOIN invoices i on ic.invoice_id = i.invoice_id
WHERE pccr.deleted_at IS NULL
    AND pccr.end BETWEEN '2022-12-01' AND '2022-12-30'

我没有结果。这些日期就像一个数组:

dates = ['2017-01-01', '2017-01-02', '2017-01-03', ... , '2022-12-30', '2022-12-31']

所以,你可以看到那个房间在2022-12-30是活动的,但我不能得到它。我怎么能那样做?

希望我能很好地表达自己。

共有2个答案

爱博达
2023-03-14

需要选择开始日期在期间结束之前、开始日期在期间开始之后的房间

SELECT ic.invoice_id,
       pccr.room_name,
       DATEDIFF(end, start) AS 'Total Days',
       pccr.start,
       pccr.end,
FROM partners_campuses_courses_rooms AS pccr
         JOIN invoices_courses AS ic ON pccr.course_id = ic.course_id
         JOIN invoices i on ic.invoice_id = i.invoice_id
WHERE pccr.deleted_at IS NULL
    AND pccr.start < '2022-12-30' AND pccr.end > '2022-12-01'
颜举
2023-03-14

如果需要在给定日期处于活动状态的行,请使用以下逻辑:

WHERE pccr.deleted_at IS NULL AND
      pccr.end >= $date AND
      pccr.start <= $date

如果您有一个日期范围,请使用:

WHERE pccr.deleted_at IS NULL AND
      pccr.end >= $start_date AND
      pccr.start <= $end_date
 类似资料:
  • 问题内容: 我需要填充一个表,该表将存储2个给定日期之间的日期范围:09/01/11-10/10/11 因此,在这种情况下,该表将从2011年9月1日开始存储,直到每天存储到10/10/11,我想知道在SQL Server中是否有一种巧妙的方法-我目前正在使用SQL Server 2008 。 谢谢 问题答案: 在SQL 2005+上很容易;如果您有数字表或理货表,操作会更容易。我在下面伪造了它:

  • 问题内容: 这个问题已经在这里有了答案 : 从日期范围生成天数 (29个答案) 7年前关闭。 我想显示a 和MySQL中的日期之间的所有日期。 例如,具有和字段的表中的数据为: 日期是和 日期, 我想要的结果是: 如何仅使用MySQL查询来实现此目的(而不必使用存储过程,因为我对此并不熟悉)? 编辑: 尽管我仍然没有完全得到想要的结果,但是这里的答案很有帮助。在此示例中,它仅成功运行,但不输出任何

  • 问题内容: 我的数据库中有以下一组匹配日期的日期(dd / MM / yyyy): 事件具有开始和结束日期(时间无关紧要),并且endDate为NULL表示事件仍在进行中。 我想确定的是两个任意日期之间的日期范围,其中a)没有事件,b)事件重叠。 因此,对于输入日期范围01/04/2009-30/06/2009,我希望得到以下结果: 注意,作为结果,两个相邻的重叠范围是可以接受的。 谁能用SQL算

  • 问题内容: 我有这段代码将字符串转换为日期对象 我想知道如果当前日期落在2天我的阵列中得到之间和 问题答案: 迅捷2 你已经在你的日期字符串转换的代码来。假设您在和中都有两个日期,那么您要做的就是检查当前日期是否在以下日期之间: 编辑: 如果要执行 包含 范围检查,请使用以下条件:

  • 问题内容: 已修正-这是我现在所拥有的 -用ASP编写 原始问题: 简单的问题,但由于某种原因,我似乎无法正常工作。 我有一个搜索框,旁边是日期范围选择菜单,因此用户可以搜索最近1个月,6个月或12个月内的照片。 我所拥有的没有错误,但是当它应该执行时它不会产生任何结果,就是这样: SQL输出产生以下结果: 数据库的’dateCreated’字段设置为(Date INDEX)。 谁能看到哪里出了问

  • 本文向大家介绍coldfusion 日期或时间范围,包括了coldfusion 日期或时间范围的使用技巧和注意事项,需要的朋友参考一下 示例 日期或时间范围的示例。