プライマリ・コンテンツに移動
Oracle® Databaseユーティリティ
12cリリース1 (12.1.0.2)
B71303-09
目次へ移動
目次
索引へ移動
索引

前
次

date_format_spec

date_format_spec句を使用して、特定の形式の日付データまたは時刻データ(またはその両方)が文字列フィールドに含まれることを指定します。この情報は、文字フィールドが日付データ型または時刻データ型に変換される場合、および文字列フィールドが日付列にマップされる場合のみに使用されます。

日付と時刻の書式を正しく指定する方法の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

date_format_spec句の構文は次のとおりです。

DATE

DATE句を使用して、文字列に日付が含まれることを指定します。

MASK

MASK句を使用して、データ型に対するデフォルトのグローバリゼーション書式マスクを上書きします。日付マスクを指定しない場合は、データ型に対する適切なグローバリゼーション・パラメータのデータベースのNLSパラメータ設定(セッションの設定ではない)が使用されます。NLS_DATABASE_PARAMETERSビューに、これらの設定が表示されます。

  • NLS_DATE_FORMAT (DATEデータ型)

  • NLS_TIMESTAMP_FORMAT (TIMESTAMPデータ型)

  • NLS_TIMESTAMP_TZ_FORMAT (TIMESTAMP WITH TIME ZONEデータ型)

以下の点に注意する必要があります。

  • NLS_NUMERIC_CHARACTERS初期化パラメータのデータベース設定(NLS_DATABASE_PARAMETERSビューの設定)によって、文字データ型から数値データ型への暗黙的な変換に使用される小数点区切りが制御されます。

  • デフォルトの書式では、桁区切りは使用できません。

TIMESTAMP

TIMESTAMP句を使用して、書式化されたタイムスタンプがフィールドに含まれることを指定します。

INTERVAL

INTERVAL句を使用して、フィールドに書式化された期間が含まれることを指定します。期間の型は、YEAR TO MONTHまたはDAY TO SECONDのいずれかです。

次に、複雑なDATE文字列とTIMESTAMP文字列の使用例を示します。その後に、ロードが可能なデータ・ファイルのサンプルを示します。

SQL> CREATE TABLE emp_load
  2    (employee_number      CHAR(5),
  3     employee_dob         CHAR(20),
  4     employee_last_name   CHAR(20),
  5     employee_first_name  CHAR(15),
  6     employee_middle_name CHAR(15),
  7     employee_hire_date   DATE,
  8     rec_creation_date    TIMESTAMP WITH TIME ZONE)
  9  ORGANIZATION EXTERNAL
 10    (TYPE ORACLE_LOADER
 11     DEFAULT DIRECTORY def_dir1
 12     ACCESS PARAMETERS
 13       (RECORDS DELIMITED BY NEWLINE
 14        FIELDS (employee_number      CHAR(2),
 15                employee_dob         CHAR(20),
 16                employee_last_name   CHAR(18),
 17                employee_first_name  CHAR(11),
 18                employee_middle_name CHAR(11),
 19                employee_hire_date   CHAR(22) date_format DATE mask "mm/dd/yyyy hh:mi:ss AM",
 20                rec_creation_date    CHAR(35) date_format TIMESTAMP WITH TIME ZONE mask "DD-MON-RR HH.MI.SSXFF AM TZH:TZM"
 21               )
 22       )
 23     LOCATION ('infoc.dat')
 24    );
 
Table created.
SQL> SELECT * FROM emp_load;
 
EMPLO EMPLOYEE_DOB         EMPLOYEE_LAST_NAME   EMPLOYEE_FIRST_ EMPLOYEE_MIDDLE
----- -------------------- -------------------- --------------- ---------------
EMPLOYEE_
---------
REC_CREATION_DATE
---------------------------------------------------------------------------
56    november, 15, 1980   baker                mary            alice
01-SEP-04
01-DEC-04 11.22.03.034567 AM -08:00
 
87    december, 20, 1970   roper                lisa            marie
01-JAN-02
01-DEC-02 02.03.00.678573 AM -08:00
 
 
2 rows selected.

info.dat ファイルの内容は、次のようになります。これは、2つの長いレコードです。日付フィールド(09/01/200401/01/2002)とそれに続く時刻フィールドの間には、空白が1つあります。

56november, 15, 1980  baker             mary       alice      09/01/2004 08:23:01 AM01-DEC-04 11.22.03.034567 AM -08:00
87december, 20, 1970  roper             lisa       marie      01/01/2002 02:44:55 PM01-DEC-02 02.03.00.678573 AM -08:00