SAK 図書館
SQL 日付関数 - システム日付、日付の差、日付の加算、次の曜日、月末日
Oracle 固有の部分があるかもしれません。SQL-Server、MDB では注意のこと。
■システム日付、システム時間
・sysdate() 関数は、システム日付(Oracle サーバ日付) を返す。
この例では、データベースサーバのシステム日付を 2001.06.20 15:12:00
の形式で返します。
尚、NT ネットワークでは、サーバ日付にクライアント日付をログイン時に
合わす機能を使うと良いです。
クライアントの日付取得は、VB6 では、
format(now, "yyyy.mm.dd hh:mm:ss")
のようにします。
select to_char(sysdate, 'yyyy.mm.dd hh24:mi:ss') now from dual
;
■日付の差 (日付間隔、日付範囲)
・months_between() 関数は、日付の差が何ヶ月か返します。
月の端数は小数点以下として返ります。
(日付計算、日数計算、カレンダー計算)
select 品番, months_between(sysdate, 受注日) from sak.受注m
order by 品番
;
■日付の加算
・add_months() 関数は、日付を加算して返します。
次の例では、2 ヶ月後の日付を問い合わています。
(日付計算、日数計算、カレンダー計算)
select add_months(sysdate, 2) from dual
;
■次の曜日
・next_day() 関数は、次の指定曜日に対する日を返します。
次の例では、次の月曜が何日かを問い合わています。
(日付計算、日数計算、カレンダー計算、曜日算出)
select next_day(sysdate, '月') from dual
;
■月末日
・last_day() 関数は、月末日を返します。
(日付計算、日数計算、カレンダー計算、月の日数、月の最終日)
select last_day(sysdate) from dual
;
■日付型へ変換(書式変換、日付変換)
・to_date() 関数は、文字日付を日付型に変換します。
時間部分は、HH24:MI:SS 等の書式を使います。
select to_date('20010712', 'YYYYMMDD') from dual
;
select to_date('2001.07.12', 'YYYY.MM.DD') from dual
;
select to_date('010712', 'RRMMDD') from dual
;
select to_date('01/07/12', 'RR/MM/DD') from dual
;
・5 日後を計算するなら、次のようにします。
select to_date('2001.07.12', 'YYYY.MM.DD') + 5 from dual
;
・5 日後を計算して文字型にするなら、次のようにします。
select to_char(to_date('20010712', 'YYYYMMDD') + 5, 'yyyy/mm/dd') from dual
;
select to_char(to_date('2001.07.12', 'YYYY.MM.DD') + 5, 'yyyy.mm.dd') from dual
;
select to_char(to_date('01/07/12', 'RR/MM/DD') + 5, 'rr/mm/dd') from dual
;
・元もとが日付型なら、次のようになります。
select to_char(sysdate + 5, 'yyyy/mm/dd') from dual
;
■型変換
・cast() 関数は、ANSI 規程の変換関数です。
SQL-Server の convert() 関数は、Oracle では、to_char()、to_number()、
to_date() に相当します。
select 品番, cast(受注数 as varchar2(20)) from sak.受注m
order by 品番
;
select cast('99-01-01' as date) from dual;
■ちょっとしたサンプル
・改訂日が文字型なら
update テーブル名
set 改訂日 = '1999-' || substr(改訂日, 6, 5)
where 改訂日 like '2099%'
;
・改訂日が日付型なら
update テーブル名
set 改訂日 = to_date('1999' || to_char(改訂日, 'mmdd'), 'yyyymmdd')
where to_char(改訂日, 'yyyy') = '2099'
;
■SQL 基礎実地編資料
■SQL 基礎編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料