zukucode
主にWEB関連の情報を技術メモとして発信しています。

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

関連記事