[英]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');
但只有使用字符串会告诉数据库将其存储为字符串而不是日期。 它们之间的区别在于,您不能对字符串进行任何日期操作。 所以你现在有两个选择。
INSERT INTO logiciel VALUES ('log1','Oracle 6',TO_DATE('13-05-1995', 'DD-MM-YYYY'),'6.2','UNIX','3000');
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.