Home実験室 − No.0050


        No.0050(SQL)
        日付の表示(SYSDATE関数)

■環境
  □OS: Windows XP Professional SP3
  □Oracle: Oracle Database 11g R2 (Standard)
  □OSログインユーザ: ORA_DBAグループ
  □Oracleユーザ: dicdic(実験用ユーザー)

■実験
  0. 実験ユーザー「dicdic」でコネクトする。

SQL> conn dicdic/Oracle11g 接続されました。 SQL>



  1. SYSDATE関数はシステム(パソコン内蔵の時計)の日付を返す。

SQL> select SYSDATE from dual; SYSDATE -------- 11-05-27 SQL>



  2. 上の実験の結果の書式は、「NLS_DATE_FORMAT」というOracleに設定された書式に基づいて
     出力されている。「NLS_DATE_FORMAT」がどうなっているかは、下のSELECT文で知ることができる。

SQL> select VALUE from NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_DATE_FORMAT' ORDER BY PARAMETER; VALUE -------------------------------------------------------------------------------- RR-MM-DD SQL>



  3. この書式を変えたければ、このパラメータ自体を変更してしまえばよい。
     ALTER SESSIONコマンドを打つと、書式を変更できる。ただし、カレントログインの間だけ。

SQL> alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS-(SSSSS)'; セッションが変更されました。 SQL> select SYSDATE from dual; SYSDATE --------------------------- 2011-05-27 16:44:17-(60257) SQL>

※ひとたびSQL*Plusを終了するとこの設定変更は無効になり、元に戻ります。

  4. いくら日付の書式が気に食わないからといって、ログインのたびに
     ALTER SESSIONコマンドを打つのは面倒くさい。
     そこで、型変換してSYSDATEを呼び出すことで、呼び出すたびに自由な書式を指定できてよい。
     TO_CHAR関数は、文字列以外の形式のデータを文字列として取り出す。
     第1引数にSYSDATE、第2引数に好きな書式をシングルコーテーションで括って記述すれば、
     好きなフォーマットで取り出せる。

SQL> Select TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS (SSSSS)') 日時と時刻 from dual; 日時と時刻 --------------------------- 27/05/2011 16:59:22 (61162) SQL>



  5. もういっちょ

SQL> Select TO_CHAR(SYSDATE,'YYYY"年"MONDD"日"(DY) AMHH24:MI:SS "今日の午前0時から"SSSSS"秒経過"') from dual; TO_CHAR(SYSDATE,'YYYY"年"MONDD"日"(DY)AMHH24:MI:SS"今日の午前0時か ------------------------------------------------------------------ 2011年5月 27日(金) 午後17:05:13 今日の午前0時から61513秒経過 SQL>





    【PR】    Oracle実験室監修  『Oracleアーキテクチャ鳥瞰図』 PDF  (Oracleのアーキテクチャを一目で俯瞰できるイラスト)  


Home実験室 − No.0050

© 2011-2011   Amateur Laboratory of ORACLE
inserted by FC2 system