Cách tốt nhất có thể là tách trình tạo hàng ra khỏi hàm ngày. Vì vậy, hãy tạo một danh sách từ 0 đến 6 và tính các tháng từ đó. Nếu bạn muốn vượt qua các tháng sau đó, hãy làm điều đó trong điều khoản with
with my_counter as (
Select Level-1 as id
from dual
connect by Level <= 7
)
select to_char(add_months(sysdate, id),'YYYYMM') from my_counter
Ví dụ dưới đây sẽ cho phép bạn chọn các ngày bạn yêu cầu để tìm ra sự khác biệt.
with my_counter as (
Select Level-1 as id
from dual
connect by level <= months_between(add_months(trunc(sysdate,'MM'), 6),
trunc(sysdate,'MM')) + 1
)
select to_char(add_months(trunc(sysdate, 'MM'), id),'YYYYMM') from my_counter