【发布时间】:2018-09-20 04:16:18
【问题描述】:
我有一个名为Events 的重复日期表,我如何获取此表并根据事件 wday 和时间从系列中生成具体即将到来的日期? (例如只有 wday "mondays" 和开始时间 "7pm" 是重要的)
事件
+-----+---------------------------+---------------------+
| id | start_at | recurring_schedule |
+-----+---------------------------+---------------------+
| 358 | 2015-01-23 20:00:00 +0000 | Weekly |
| 359 | 2016-01-22 19:30:00 +1100 | Monthly |
| 360 | 2016-02-01 19:00:00 +1100 | Weekly |
| 361 | 2016-02-01 20:00:00 +0000 | Weekly |
| 362 | 2014-02-13 20:00:00 +0000 | Bi-Weekly |
+-----+---------------------------+---------------------+
- start_at(日期时间,用于DOW和开始时间,忽略实际日期)
为简单起见,您可以忽略重复安排并假设所有事件都是每周一次,例如总是在一周的同一天。
我怎样才能把这样的表格转换成这样的:
未来日志
+----------+---------------------------+
| event_id | start_at |
+----------+---------------------------+
| 35 | 2018-04-11 19:30:00 +0000 |
| 94 | 2018-04-12 20:00:00 +0100 |
| 269 | 2018-04-13 18:30:00 +0100 |
| 45 | 2018-04-13 20:00:00 +0100 |
| 242 | 2018-04-13 19:30:00 +1100 |
| 35 | 2018-04-18 19:30:00 +0000 |
| 94 | 2018-04-19 20:00:00 +0100 |
| 269 | 2018-04-20 18:30:00 +0100 |
| 45 | 2018-04-20 20:00:00 +0100 |
| 242 | 2018-04-20 19:30:00 +1100 |
+----------+---------------------------+
例如,我想SELECT FROM events 理论事件,并使用诸如 generate_series 之类的东西从每个事件中创建 6-8 周的未来日期来构建事件时间线。
【问题讨论】:
-
我相信是简单的 json,但你可以忽略它,对于这个例子,你可以假设它们每周在同一天的同一时间重复出现,例如每周一晚上 7:30。跨度>
标签: postgresql postgresql-9.4 generate-series