获取范围之间的日期时出现问题
Posted
技术标签:
【中文标题】获取范围之间的日期时出现问题【英文标题】: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
【参考方案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从事件表预订事件日期,即用逗号选择)
【讨论】:
以上是关于获取范围之间的日期时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
计算两个日期之间的差异时出现 AWS Redshift 错误