Oracle PL/SQL: 某日期前後幾個月的 "第一天" 與 "最後一天"

在 Oracle PL/SQL 中, 若要取得 "某個日期的前後幾個月", 相當容易, 利用 add_months 函數即可 (該篇文章鏈結),

而若要取得 "前後幾個月的第一天與最後一天", 可以由此進行變化 :
 說明
1) 先利用 add_months 取得前後幾個月.

2) 再搭配使用 to_char 與 to_date 做轉換.

 範例: 兩個月後, 該月份的第一天
select to_date(to_char(add_months( to_date('2008-01-30','YYYY-MM-DD'), 2)
, 'YYYY-MM') || '-01'
, 'YYYY-MM-DD')

from dual;

-- 結果: 01-MAR-2008

 範例: 兩個月後, 該月份的最後一天
select to_date(to_char(add_months( to_date('2008-01-30','YYYY-MM-DD'), 2+1)
, 'YYYY-MM') || '-01'
, 'YYYY-MM-DD') - 1

from dual;

-- 結果: 31-MAR-2008
Related Posts Plugin for WordPress, Blogger...