Oracle システム日付や任意の日付型の月末や月初の日付を取得する
Oracle
で日付の月末や月初を取得する方法を紹介します。
月初を取得する
月初を取得したい場合は以下のように日付部分を01
固定で年月のみ取得するようにすれば取得できます。
SELECT
TO_CHAR(SYSDATE, 'YYYYMM') || '01' --YYYYMMDD形式の文字列型
,TO_DATE(TO_CHAR(SYSDATE, 'YYYYMM') || '01', 'YYYYMMDD') --日付型
FROM
DUAL
月末を取得する
月末を取得したい場合、月初のように日にちを固定にはできませんが、LAST_DAY
というファンクションが用意されているのでこれを使用します。
SELECT
TO_CHAR(LAST_DAY(SYSDATE), 'YYYYMMDD') --YYYYMMDD形式の文字列型
,LAST_DAY(SYSDATE) --日付型
FROM
DUAL
文字列の場合
YYYYMMDD
形式の文字列型の月末や月初を取得したい場合は一度日付型に変換します。
SELECT
TO_CHAR(TO_DATE(`20170123`, 'YYYYMMDD'), 'YYYYMM') || '01' --20170101
,TO_CHAR(LAST_DAY(TO_DATE(`20170123`, 'YYYYMMDD')), 'YYYYMMDD') --20170131
FROM
DUAL