指定した日時フィールドの値を取り出す

構文

EXTRACT ( element FROM datetime ) Oracle 9i
return [ number | string ]

引数

element抽出する日付の要素
datetime日付式、または、期間式

戻り値

  • 指定した日時要素、または、タイムゾーン名称

適用

  • SQL および PL/SQL の両方で使用可能。

抽出する日付の要素

日付の要素element 引数
YEAR
MONTH
DAY
HOUR
MINUTE
SECOND
タイムゾーン
情報あり
TIMEZONE_HOUR
TIMEZONE_MINUTE
タイムゾーン名称TIMEZONE_REGION
タイムゾーン略称TIMEZONE_ABBR

EXTRACT 関数の内容

指定した日時フィールドの値を取り出す。
DATE 値からは YEAR、MONTH および DAY のみを抽出でき、TIMESTAMP 値からは SECOND まで取得が可能。(TIMESTAMP WITH TIME ZONE 値からは TIMEZONE_HOURとTIMEZONE_MINUTE のみ)

DATE 型から HOUR を抽出すると ORA-30076: 抽出ソースの抽出フィールドが無効です が発生する。
ANSI では DATE 値は日にちまでと定義されているために発生する現象である。(ANSI-SQL92 のデータタイプは DATE, TIME, TIMESTAMP)

EXTRACT 使用例

SQL> select dt, EXTRACT(YEAR FROM dt), EXTRACT(MONTH FROM dt), EXTRACT(DAY FROM dt)
  2   from date_sample;
 
DT                  EXTRACT(YEARFROMDT) EXTRACT(MONTHFROMDT) EXTRACT(DAYFROMDT)
------------------- ------------------- -------------------- ------------------
2000-08-07 04:27:56                2000                    8                  7
2001-01-28 05:12:47                2001                    1                 28
2002-12-01 08:01:10                2002                   12                  1
2003-02-14 11:45:56                2003                    2                 14

抽出フィールドが 時(HOUR)以下の場合、FROM には TIMESTAMP 型の入力が必要

SQL> select ts, EXTRACT(HOUR FROM ts), EXTRACT(MINUTE FROM ts), EXTRACT(SECOND FROM ts)
  2   from time_sample;
 
TS                   EXTRACT(HOURFROMTS) EXTRACT(MINUTEFROMTS) EXTRACT(SECONDFROMTS)
-------------------- ------------------- --------------------- ---------------------
2000-08-07 04:27:56                    4                    27                    56
2001-01-28 05:12:47                    5                    12                    47
2002-12-01 08:01:10                    8                     1                    10
2003-02-14 11:45:56                   11                    45                    56
2004-10-28 04:50:39                    4                    50                    39

TIMEZONE_REGION はタイムゾーン名、TIMEZONE_ABBR はその略称となる。デフォルトで日本では Asia/Tokyo と JST が期待されたのであるが UNKNOWN/UNK になる。(+09:00 のエリアが複数国あるからかもしれない)
デフォルトのタイムゾーン名は ORA_SDTZ 環境変数 で設定することができる。

SQL> select current_timestamp, EXTRACT(TIMEZONE_REGION FROM current_timestamp) region,
  2                            EXTRACT(TIMEZONE_ABBR FROM current_timestamp) abbr
  3  from dual;
 
CURRENT_TIMESTAMP                    REGION     ABBR
------------------------------------ ---------- ----------
07-07-07 12:41:21.406000 +09:00      UNKNOWN    UNK
SQL> alter session set time_zone='Japan';
SQL> select current_timestamp, EXTRACT(TIMEZONE_REGION FROM current_timestamp) region,
  2                            EXTRACT(TIMEZONE_ABBR FROM current_timestamp) abbr
  3  from dual;
 
CURRENT_TIMESTAMP                    REGION     ABBR
------------------------------------ ---------- ----------
07-07-07 12:41:21.421000 JAPAN       Japan      JST
SQL> alter session set time_zone='Asia/Tokyo';
SQL> select current_timestamp, EXTRACT(TIMEZONE_REGION FROM current_timestamp) region,
  2                            EXTRACT(TIMEZONE_ABBR FROM current_timestamp) abbr
  3  from dual;
 
CURRENT_TIMESTAMP                    REGION     ABBR
------------------------------------ ---------- ----------
07-07-07 12:41:21.437000 ASIA/TOKYO  Asia/Tokyo JST

日本とその周辺のタイムゾーンは +09:00

SQL> select ts, EXTRACT(TIMEZONE_HOUR FROM ts), EXTRACT(TIMEZONE_MINUTE FROM ts)
  2   from time_sample;
 
TS                   EXTRACT(TIMEZONE_HOURFROMTS) EXTRACT(TIMEZONE_MINUTEFROMTS)
-------------------- ---------------------------- ------------------------------
2002-12-01 08:01:10                             9                              0
2000-08-07 04:27:56                             9                              0
2001-01-28 05:12:47                             9                              0
2003-02-14 11:45:56                             9                              0
2004-10-28 04:50:39                             9                              0


日付の操作に関連する内容

 
アルファベット別 関数一覧 ショートカット
ABCDEFG
HILMNOP
RSTUVWX
スポンサード リンク

ITエンジニア キャリアアップ・転職・求人情報

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ 会員制(無料)の公式技術サイト
Google