2012-11-22 13 views
5

Possible Duplicate:
Simple Oracle query: literal does not match format stringOracleは - リテラルが

フォーマット文字列エラーと一致していない私は、次のエラーを取得しています:

INSERT INTO CatalogueEntry VALUES('2001-12-10', 2, 14.99, 1, 0) 

ERROR at line 1: ORA-01861: literal does not match format string ` 

最初のフィールドはDATE形式です。

アイデア?

ありがとうございました。あなたが日付列に文字列値を挿入している場合

答えて

17

を試してみてください、あなたはto_date()機能を使用してINSERT時の日付に変換する必要があります。この関数を使用する場合は、文字列の形式を指定します。

to_date()関数形式:

to_date(string1, [ format_mask ], [ nls_language ]) 

だからあなたのクエリは次のようになります。

insert into CatalogueEntry 
values 
(
    to_date('2001-12-10', 'yyyy-mm-dd'), 
    2, 
    14.99, 
    1, 
    0); 

SQL Fiddle with demo

+3

に別の方法を参照してくださいANSI SQLリテラルを使用することです: '日付を「2001- 12-10'' –

+0

@a_horse_with_no_name 'date'リテラルはNLS_DATE_FORMATの設定に依存するため、OPの問題の代替解決策にはなりません。 –

+2

@NicholasKrasnov:ANSIの日付リテラルは、NLSやその他の環境設定とはまったく独立しています(*は* YYYY-MM-DDです)。だから、これは有効な選択肢です(入力が少なく、実際には広範囲のDBMSで動作します)。 –

1

この

INSERT INTO CatalogueEntry 
       VALUES(to_date('2001-12-10','yyyy-mm-dd', 2, 14.99, 1, 0); 
関連する問題