我什至不知道從哪里開始,或者是否可以在 PostgreSQL 中進行(或者我只需要在我的代碼中處理它)
我有一張賬單表,其中指定每個月的哪一天到期
| ID | 賬單名稱 | day_of_month |
|---|---|---|
| 1 | 抵押 | 5 |
| 2 | 汽車支付 | 11 |
| 3 | 水 | 14 |
| 4 | 電 | 27 |
我有一張 4 周期間的表格
| ID | 開始 | 結尾 |
|---|---|---|
| 1 | 2022 年 9 月 7 日 | 2022 年 10 月 4 日 |
| 2 | 2022 年 9 月 5 日 | 2022 年 11 月 1 日 |
| 3 | 2022 年 11 月 2 日 | 2022 年 12 月 29 日 |
我想將這兩個表連接在一起并確定每個賬單是否在一個時期的開始和結束范圍內,然后分配其確切日期
我想以exact_date列結束
| 開始 | 結尾 | 賬單名稱 | day_of_month | 準確日期 |
|---|---|---|---|---|
| 2022 年 9 月 7 日 | 2022 年 10 月 4 日 | 汽車支付 | 11 | 2022 年 9 月 11 日 |
| 2022 年 9 月 7 日 | 2022 年 10 月 4 日 | 水 | 14 | 2022 年 9 月 14 日 |
| 2022 年 9 月 7 日 | 2022 年 10 月 4 日 | 電 | 27 | 2022 年 9 月 27 日 |
| 2022 年 10 月 5 日 | 2022 年 11 月 1 日 | 抵押 | 5 | 2022 年 10 月 5 日 |
| 2022 年 10 月 5 日 | 2022 年 11 月 1 日 | 汽車支付 | 11 | 2022 年 10 月 11 日 |
| 2022 年 10 月 5 日 | 2022 年 11 月 1 日 | 水 | 14 | 2022 年 10 月 14 日 |
| 2022 年 10 月 5 日 | 2022 年 11 月 1 日 | 電 | 27 | 2022 年 10 月 27 日 |
| 2022 年 11 月 2 日 | 2022 年 12 月 29 日 | 抵押 | 5 | 2022 年 11 月 5 日 |
| 2022 年 11 月 2 日 | 2022 年 12 月 29 日 | 汽車支付 | 11 | 2022 年 11 月 11 日 |
| 2022 年 11 月 2 日 | 2022 年 12 月 29 日 | 水 | 14 | 2022 年 11 月 14 日 |
| 2022 年 11 月 2 日 | 2022 年 12 月 29 日 | 電 | 27 | 2022 年 11 月 27 日 |
這可能嗎?任何正確方向的幫助將不勝感激
uj5u.com熱心網友回復:
使用generate_series():
select p.start, p.end, b.bill_name, b.day_of_month,
gs.exact_date::date
from periods p
cross join lateral generate_series(
p.start, p.end, interval '1 day') as gs(exact_date)
join bills b on b.day_of_month = extract(day from gs.exact_date)
order by exact_date;
在這里提琴
uj5u.com熱心網友回復:
您可以交叉加入表格并添加確切的日期(-1)
SELECT "start", "end","bill_name", "day_of_month" ,date_trunc('month', "start")::date "day_of_month" - 1
FROM periods CROSS JOIN due
| start | end | bill\_name | day\_of\_month | ?column? |
|:--------------------|:---------------------|:-----------|---------------:|:---------|
| 2022-09-07 02:00:00 | 2022-10-04 02:00:00 | Mortgage | 5 | 2022-09-05 |
| 2022-09-07 02:00:00 | 2022-10-04 02:00:00 | Car Payment | 11 | 2022-09-11 |
| 2022-09-07 02:00:00 | 2022-10-04 02:00:00 | Water | 14 | 2022-09-14 |
| 2022-09-07 02:00:00 | 2022-10-04 02:00:00 | Electricity | 27 | 2022-09-27 |
| 2022-10-05 02:00:00 | 2022-11-01 01:00:00 | Mortgage | 5 | 2022-10-05 |
| 2022-10-05 02:00:00 | 2022-11-01 01:00:00 | Car Payment | 11 | 2022-10-11 |
| 2022-10-05 02:00:00 | 2022-11-01 01:00:00 | Water | 14 | 2022-10-14 |
| 2022-10-05 02:00:00 | 2022-11-01 01:00:00 | Electricity | 27 | 2022-10-27 |
| 2022-11-02 01:00:00 | 2022-12-29 01:00:00 | Mortgage | 5 | 2022-11-05 |
| 2022-11-02 01:00:00 | 2022-12-29 01:00:00 | Car Payment | 11 | 2022-11-11 |
| 2022-11-02 01:00:00 | 2022-12-29 01:00:00 | Water | 14 | 2022-11-14 |
| 2022-11-02 01:00:00 | 2022-12-29 01:00:00 | Electricity | 27 | 2022-11-27 |
SELECT 12
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/510327.html
上一篇:如何在php中獲取這種格式moment().format('YYYY-MM-DD\THH:mm:ssZ')javascript?
