SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

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 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK