如何从具有时间框架属性的表中获取数据库记录?
Posted
技术标签:
【中文标题】如何从具有时间框架属性的表中获取数据库记录?【英文标题】:How can I get DB records from table with time frame attributes? 【发布时间】:2015-09-01 15:22:53 【问题描述】:我想就以下问题寻求帮助:
我有一个带有 PostgreSQL 的 Ruby on Rails 应用程序。
我有桌子EVENTS
。每个事件有 2 个属性
starts_at
和 ends_at
。表示事件持续的时间范围。
它可能会发生,我会同时发生一些事件。
我想在哪里构建查询:
我得到在给定时间范围内发生的所有事件。例如。 “把 12 月的所有事件都给我。”如果有活动从 11 月开始到 1 月结束。我也想参加。
我想从给定的时间戳获取所有事件。与上一个类似,但作为输入,我只给出时间戳而不是时间范围。
我的问题是我应该如何开始解决我上面描述的问题?
【问题讨论】:
你好 michal,下次尝试提供SqlFiddle 这样我们可以更好地理解问题并更快地给你答案 – 另请阅读How to ask 和How to create a Minimal, Complete, and Verifiable example. 【参考方案1】:首先获取一个时间范围内的所有事件。 创建一个函数并接收参数
SELECT *
FROM events
WHERE ends_at >= @your_begin_timeframe
AND start_at <= @your_end_timeframe
如果您想要一个月的事件,您需要一个months
表。
月:
month_id month_name begin end
1 nov 2015 01/11/2015 30/11/2015
2 dec 2015 01/12/2015 31/12/2015
然后加入两个表
SELECT e.*, m.month_name
FROM events e
INNER JOIN months m
ON e.ends_at >= m.begin
AND e.starts_at <= m.end
【讨论】:
以上是关于如何从具有时间框架属性的表中获取数据库记录?的主要内容,如果未能解决你的问题,请参考以下文章
MySQL查询从具有1000万行的表中获取每个条目的最新记录
是否有任何其他选项可以从表中获取总计数和同一查询中列的不同计数?