5

タイム ゾーンの 3 文字コードを含む外部ソースから日付形式を挿入する必要がありますが、TZD形式マスクが機能していないようです...

insert into blah
    values (to_date('Thu, 18 Feb 2010 08:37:00 EST','Dy, DD Mon YYYY HH24:MI:SS TZD'));

ORA-01821: date format not recognized

「TZD」を外すと・・・

insert into blah
    values (to_date('Thu, 18 Feb 2010 08:37:00','Dy, DD Mon YYYY HH24:MI:SS'));

1 row created.

Oracle でのそのような挿入ステートメントの適切なマスクは何ですか?

desc blah
 Name                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 D                          DATE

編集: テーブルの列を DATE 型から TIMESTAMP 型に変更しましたが、同じエラーが発生しました。

4

2 に答える 2

6

日付列にはオプションとしてタイムゾーンがありません。列をデータ型TIMESTAMP WITH TIME ZONEまたはとして作成する必要TIMESTAMP WITH LOCAL TIME ZONEがあり、さらに、TO_DATE関数は適用している TIME ZONE 形式マスクを認識しません。

SQL> CREATE TABLE T
  2  (DT DATE,
  3   TS TIMESTAMP,
  4   TSTZ TIMESTAMP WITH TIME ZONE,
  5   TSLTZ TIMESTAMP WITH LOCAL TIME ZONE);

Table created.

SQL> INSERT INTO T (TSLTZ) VALUES 
  2  (to_timestamp_tz('Thu, 18 Feb 2010 08:37:00 EST','DY, DD Mon YYYY HH24:MI:SS TZD'))
  3  /

1 row created.

SQL> INSERT INTO T (TSTZ) VALUES 
  2  (to_timestamp_tz('Thu, 18 Feb 2010 08:37:00 EST','DY, DD Mon YYYY HH24:MI:SS TZD'))
  3  /

1 row created.
于 2010-02-18T18:42:34.743 に答える