1

次の表を作成しました。

CREATE TABLE match(
match_id NUMBER(4,0), 
match_date DATE, 
attendance NUMBER(6,0), 
stadium_name VARCHAR2(40), 
tournament_id NUMBER(3,0),
CONSTRAINT match_id_pk PRIMARY KEY(match_id),
CONSTRAINT match_stadium_name_fk FOREIGN KEY(stadium_name) 
           REFERENCES stadium(stadium_name));

次の行を挿入しようとしています。

INSERT INTO match VALUES(1001, '20130515', 90000, 'American Airlines Arena', 001);

私が見つけたものはすべて、形式が YYYYMMDD であることを示しています。ただし、ORA-01861: リテラルがフォーマット文字列と一致しません。

( DESCRIBE match) を使用すると、長さが 7 しかないと表示されます。10 になるはずだと思っていました。

助けてくれてありがとう。

4

1 に答える 1

7

おそらく、形式YYYYMMDDはデータベースの日付形式ではありません (データベースの日付形式をNLS_DATE_FORMAT確認するには、 を検索する必要があります)。

しかし、システム レベルには があり、セッション レベルにはNLS_DATE_FORMAT(おそらく他の)があります。NLS_DATE_FORMAT

TO_DATEformatを使用して指定することで、必要なものを実現できます。

INSERT INTO match VALUES(1001, TO_DATE('20130515', 'YYYYMMDD'), 90000, 'American Airlines Arena', 001);
于 2013-10-04T12:59:46.117 に答える