【问题标题】:Issue while fetching dates between range获取范围之间的日期时出现问题
【发布时间】:2016-09-12 09:24:17
【问题描述】:

我有两张桌子。一是有以下模式的大厅。

一个大厅可以举办很多活动。我想要两个日期之间可用的大厅。例如 2016 年 9 月 10 日和结束日期 = 2016 年 9 月 15 日之间的大厅。 我想要所有没有在整个日期范围内预订的大厅,即 10、11、12、13、14、15。

【问题讨论】:

  • 您能否展示一些示例数据以及您的确切查询和预期结果 - 您的 2 个场景并不那么有启发性。
  • 感谢@PaulF 的回复。这些场景只是示例。我的意思是说任何在该范围内至少有一个可用日期的大厅。
  • 我什至不明白场景显示的是什么 - 你需要更清楚。
  • 这是我试过的SELECT h.* FROM halls h LEFT JOIN ( SELECT hallid,id FROM EVENTS WHERE EVENTS.eventdate BETWEEN '2016-10-10' AND '2016-10-15' GROUP BY id ) AS e ON h.id = e.hallid WHERE e.id IS NULL

标签: mysql database between


【解决方案1】:

那么问题是什么? (:

SELECT 
  * 
FROM events
INNER JOIN halls ON (halls.id = events.hallid)
WHERE 
  events.eventdate >= '2016-09-10' AND events.eventdate <= '2016-09-15';

【讨论】:

  • 这将选择10,11,12,13,14,15预订的大厅。如果我错了,请纠正我。
  • @NishantDongare 如果大厅在规定时间内被预订 - 是的
【解决方案2】:

在您的内部查询中创建新列,其值为 eventdate 的 daypart 然后根据新列使用 not in 过滤数据

ex: select t.* from (select table1 .hallname,table2.eventdate,DAY(table2.eventdate) as daypart from table1 inner join table2 where eventdate between startdate and enddate) as t where t.daypart not in (select从事件表预订事件日期,即用逗号选择)

【讨论】:

    猜你喜欢
    • 2019-02-20
    • 2021-03-02
    • 2014-02-09
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 2011-02-16
    • 2018-04-08
    • 1970-01-01
    相关资源
    最近更新 更多