【发布时间】:2021-04-14 03:19:16
【问题描述】:
我有这个日期范围的表格:
| SID | StartDate | EndDate | CID | Time_Stamp |
|---|---|---|---|---|
| 1001 | 2021-04-14 | 2021-04-15 | 1002 | 2021-04-14 |
| 1003 | 2021-04-14 | 2021-04-16 | 1004 | 2021-04-14 |
我需要分解日期,使其看起来像这样。
| SID | StartDate | EndDate | CID | Time_Stamp |
|---|---|---|---|---|
| 1001 | 2021-04-14 | 2021-04-15 | 1002 | 2021-04-14 |
| 1001 | 2021-04-15 | 2021-04-15 | 1002 | 2021-04-14 |
| 1003 | 2021-04-14 | 2021-04-16 | 1004 | 2021-04-14 |
| 1003 | 2021-04-15 | 2021-04-16 | 1004 | 2021-04-14 |
| 1003 | 2021-04-16 | 2021-04-16 | 1004 | 2021-04-14 |
我有以下代码,但它没有分解日期,只给出日期范围。
if trunc(EndDate) > trunc(StartDate) then
lv_start_date := trunc(StartDate);
WHILE trunc(lv_start_date) <= trunc(EndDate) LOOP
insert into mytable values (SID, trunc(lv_start_date), trunc(EndDate),
CID,Time_Stamp);
commit;
lv_start_date := lv_start_date + 1;
END LOOP;
end if;
有没有办法改进代码以获得预期的结果?
【问题讨论】: