获取范围之间的日期时出现问题

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 错误

从数字获取 SQL Server 中的日期名称时出现问题

从数组中删除重复项时出现超出范围异常

尝试在 SharePoint 环境中使用 AngularJS DateRangePicker 时出现未定义错误

在提供的多个日期范围之间获取 mongo 结果

将时间戳转换为特定时区然后在 bigquery 中将其转换为日期时出现问题