【发布时间】:2021-06-01 06:24:15
【问题描述】:
我有一个有四列的表。我想为从date1 到date3 的每个id 创建一个间隔为1 天的日期列。如果没有date3,那么直到date2,如果没有date2,那么只有date1。
如何在 Postgres 中实现这一点?谢谢!
样本数据:
+-------+---------------------+---------------------+---------------------+
| id | date1 | date2 | date3 |
+-------+---------------------+---------------------+---------------------+
| 76efg | 2021-01-03 06:33:54 | 2021-01-07 05:19:03 | 2021-01-08 05:19:03 |
| b67cs | 2021-01-09 03:45:24 | 2021-01-14 06:55:13 | |
| fsf56 | 2021-01-25 11:18:03 | 2021-01-25 11:18:03 | |
| ghl56 | 2021-01-29 14:25:57 | 2021-02-02 17:37:10 | 2021-02-18 01:13:37 |
| 90tum | 2021-02-18 06:13:30 | | |
+-------+---------------------+---------------------+---------------------+
id '76efg' 的期望输出:
+-------+--------------+---------------------+---------------------+---------------------+--+
| id | date_created | date1 | date2 | date3 | |
+-------+--------------+---------------------+---------------------+---------------------+--+
| 76efg | 2021-01-03 | 2021-01-03 06:33:54 | 2021-01-07 05:19:03 | 2021-01-08 05:19:03 | |
| 76efg | 2021-01-04 | 2021-01-03 06:33:54 | 2021-01-07 05:19:03 | 2021-01-08 05:19:03 | |
| 76efg | 2021-01-05 | 2021-01-03 06:33:54 | 2021-01-07 05:19:03 | 2021-01-08 05:19:03 | |
| 76efg | 2021-01-06 | 2021-01-03 06:33:54 | 2021-01-07 05:19:03 | 2021-01-08 05:19:03 | |
| 76efg | 2021-01-07 | 2021-01-03 06:33:54 | 2021-01-07 05:19:03 | 2021-01-08 05:19:03 | |
| 76efg | 2021-01-08 | 2021-01-03 06:33:54 | 2021-01-07 05:19:03 | 2021-01-08 05:19:03 | |
+-------+--------------+---------------------+---------------------+---------------------+--+
【问题讨论】:
标签: sql postgresql generate-series