【问题标题】: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_atends_at。表示事件持续的时间范围。

它可能会发生,我会同时发生一些事件。

我想在哪里构建查询:

  • 我得到在给定时间范围内发生的所有事件。例如。 “把 12 月的所有事件都给我。”如果有活动从 11 月开始到 1 月结束。我也想参加。

  • 我想从给定的时间戳获取所有事件。与上一个类似,但作为输入,我只给出时间戳而不是时间范围。

我的问题是我应该如何开始解决我上面描述的问题?

【问题讨论】:

标签: sql ruby-on-rails ruby postgresql


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多