簡體   English   中英

Oracle 中的數據類型

[英]data type in Oracle

如何解決這個問題?

INSERT INTO logiciel VALUES ('log1','Oracle 6',13-05-1995,'6.2','UNIX','3000');
INSERT INTO logiciel VALUES ('log1','Oracle 6',13-05-1995,'6.2','UNIX','3000')
                                                    *
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected DATE got NUMBER

這里的錯誤是表格表格

 create table logiciel (
    nLog varchar2 (5) primary key,
    nomLog varchar (20) not null,
    dateAchat date,
    version varchar2 (7),
    typeLog varchar2 (9),
    prix number (6,2)
    );

您必須在日期值周圍使用引號,因為日期被視為字符串 -

INSERT INTO logiciel VALUES ('log1','Oracle 6','13-05-1995','6.2','UNIX','3000');

但只有使用字符串會告訴數據庫將其存儲為字符串而不是日期。 它們之間的區別在於,您不能對字符串進行任何日期操作。 所以你現在有兩個選擇。

  1. 使用日期格式的 To_Date function -
INSERT INTO logiciel VALUES ('log1','Oracle 6',TO_DATE('13-05-1995', 'DD-MM-YYYY'),'6.2','UNIX','3000');
  1. 使用 ANSI 標准支持的 DATE 關鍵字,但必須使用日期格式為 'YYYY-MM-DD'-
INSERT INTO logiciel VALUES ('log1','Oracle 6',DATE '1995-05-13','6.2','UNIX','3000');

使用帶有適當格式掩碼的日期文字或TO_DATE function。 不要將字符串插入date數據類型列,希望 Oracle 會猜測您使用的格式。

SQL> -- date literal is always DATE 'yyyy-mm-dd'
SQL> INSERT INTO logiciel (nlog, nomlog, dateachat, version, typelog, prix)
  2    VALUES ('log1', 'Oracle 6', date '1995-05-13', '6.2', 'UNIX', '3000');

1 row created.

SQL> -- TO_DATE lets you choose format, but then the format mask must follow it
SQL> INSERT INTO logiciel (nlog, nomlog, dateachat, version, typelog, prix)
  2    VALUES ('log2', 'Oracle 6', to_date('13-05-1995', 'dd-mm-yyyy'), '6.2', 'UNIX', '3000');

1 row created.

SQL>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM