我有下表:
create_table "activities", force: :cascade do |t|
...
t.date "start_date", null: false
t.time "start_time", null: false
t.date "end_date", null: false
t.time "end_time", null: false
...
end
Run Code Online (Sandbox Code Playgroud)
此表可以包含start_date等于end_date和其他活动的活动,这些活动以不同的日期结束start_date.
我要做的是构建一个SQL查询,它将返回两个日期之间有一些活动的所有日期.
例如:
Activity 1: start_date: 2015-04-15, end_date: 2015-04-15Activity 2: start_date: 2015-04-16, end_date: 2015-04-18该查询将接受两个参数:start_date和end_date,例如:
start_date: 2015-04-01end_date: 2015-04-30执行将返回这两个日期之间活动的所有日期.在上面的例子中,结果将是:
该应用程序使用Ruby on Rails编写,数据库使用Postgres.这可以使用Ruby代码解决,但我不希望出于性能原因这样做.
如何在Postgres中只使用一个SQL语句来实现此查询?我认为generate_seriesPostgres功能可以帮助解决这个问题,但是如何解决?