ここでは日付を操作するSQL関数について紹介します。
目次
日付を編集する
文字列を日付型に変換する(TO_DATE関数)
SELECT
TO_DATE('2020-03-24', 'YYYY/MM/DD')
FROM
DUAL
--結果:2020/03/24
書式を指定して編集する(TO_CHAR関数)
SELECT
TO_CHAR(TO_DATE('2020/03/24'), 'YYYY-MM-DD')
FROM
DUAL
--結果:2020-03-24
書式を指定して編集する(12時間表記)
SELECT
TO_CHAR(TO_DATE('2020/03/24 13:52:22'), 'YYYY/MM/DD HH:MI:SS')
FROM
DUAL
--結果:2020/03/24 01:52:22
書式を指定して編集する(24時間表記)
SELECT
TO_CHAR(TO_DATE('2020/03/24 13:52:22'), 'YYYY/MM/DD HH24:MI:SS')
FROM
DUAL
--結果:2020/03/24 13:52:22
西暦を和暦で表示する(24時間表記)
SELECT
TO_CHAR(TO_DATE('2020/03/24'),
'EEYY/MM/DD',
'NLS_CALENDAR = ''JAPANESE IMPERIAL''')
FROM
DUAL
--結果:平成32/03/24
日付の書式
書式 | 説明 |
---|---|
YYYY | 4桁で表した西暦年 |
YY | 2桁で表した西暦年 |
MM | 月(01~12) |
DD | 日(1~31) |
HH | 時間(1~12) |
HH24 | 24時間表記の時間(0~23) |
MI | 分(00~59) |
SS | 秒(00~59) |
FF | ミリ秒(末尾に桁数を指定する。FF3:3桁のミリ秒) |
EE | 元号(明治、大正、昭和、平成) |
E | 元号の略称(M、T、S、H) |
D | 曜日(1:日曜日~7:土曜日) |
DAY | 曜日(日曜日~土曜日) |
AM | 午前、午後 |
DDD | 通年での日(1~366) |
WW | 年の初めからの週数 |
W | 月の初めからの週数 |
日付の情報を取得する
日付の曜日を取得する(DAY)
SELECT
TO_CHAR(TO_DATE('2020/03/24'), 'DAY')
FROM
DUAL
--結果:火曜日
時刻が午前か午後かを取得する(AM)
SELECT
TO_CHAR(TO_DATE('2020/03/24 13:00'), 'AM')
FROM
DUAL
--結果:午後
年初からの日数を取得する(DDD)
SELECT
TO_CHAR(TO_DATE('2020/03/24'), 'DDD')
FROM
DUAL
--結果:084(2020年3月24日の場合)
年初からの週数を取得する(WW)
SELECT
TO_CHAR(TO_DATE('2020/03/24'), 'WW')
FROM
DUAL
--結果:12
月初からの週数を取得する(W)
SELECT
TO_CHAR(TO_DATE('2020/03/24'), 'W')
FROM
DUAL
--結果:4
月初の日付を取得する
SELECT
TO_CHAR(TO_DATE('2020/07/07'), 'YYYY/MM') || '/01'
FROM
DUAL
--結果:2020/07/01
月末の日付を取得する(LAST_DAY関数)
SELECT
LAST_DAY('2020/07/07')
FROM
DUAL
--結果:2020/07/31
日付を計算する
月を加算・減算する(ADD_MONTHS関数)
SELECT
ADD_MONTHS('2020/07/07', - 2)
FROM
DUAL;
--結果:2020/05/07
指定した2つの日付の間の月数を求める(MONTHS_BETWEEN関数)
SELECT
MONTHS_BETWEEN('2020/10/01', '2020/07/01')
FROM
DUAL;
--結果:3
指定した2つの日付の差の日数を求める(DATEDIFF関数)
SELECT
TO_DATE('2020/08/1') - TO_DATE('2020/07/01')
FROM
DUAL;
--結果:31
指定した書式で日付を切り捨てる(TRUNC関数)
--日を切り捨てて月初にする
SELECT
TRUNC(TO_DATE('2020/06/25'), 'MM')
FROM
DUAL;
--結果:2020/06/01
--月を切り捨てて年初にする
SELECT
TRUNC(TO_DATE('2020/06/30'), 'YYYY')
FROM
DUAL;
--結果:2020/01/01
以上、日付を操作するSQL関数について解説しました。