【发布时间】:2017-02-10 13:04:28
【问题描述】:
我的表创建如下:
CREATE TABLE inventory (
id INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 100, INCREMENT BY 1) PRIMARY KEY,
name VARCHAR(30),
department VARCHAR(50),
inventory_type VARCHAR(255),
expiry_date date NOT NULL
);
下面是插入到表中的语句:
INSERT INTO inventory (name, department,inventory_type,expiry_date) VALUES ('om', 'Education','Raw', '01/01/2016');
INSERT INTO inventory (name, department,inventory_type,expiry_date) VALUES ('hari', 'HR','Solid' ,'02/02/2016');
INSERT INTO inventory (name, department,inventory_type,expiry_date) VALUES ('hariom', 'Finance','Other', '03/03/2016');
不幸的是,我明白了
原因:java.sql.SQLDataException:数据异常:无效日期时间 org.hsqldb.jdbc.JDBCUtil.sqlException 的格式(未知来源) ~[hsqldb-2.3.2.jar:2.3.2] 在 org.hsqldb.jdbc.JDBCUtil.sqlException(未知来源) ~[hsqldb-2.3.2.jar:2.3.2] 在 org.hsqldb.jdbc.JDBCStatement.fetchResult(未知来源) ~[hsqldb-2.3.2.jar:2.3.2] 在 org.hsqldb.jdbc.JDBCStatement.execute(未知来源) ~[hsqldb-2.3.2.jar:2.3.2] 在 org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:457) ~[spring-jdbc-4.1.6.RELEASE.jar:4.1.6.RELEASE] ... 60个常用框架 省略
谁能告诉我怎么了?
当我更改如下语句时,它工作正常:
INSERT INTO inventory (name, department, inventory_type, expiry_date) VALUES ('om', 'Education','Raw', '2016-01-01');
INSERT INTO inventory (name, department, inventory_type, expiry_date) VALUES ('hari', 'HR','Solid' ,'2016-02-02');
INSERT INTO inventory (name, department,inventory_type,expiry_date) VALUES ('hariom', 'Finance','Other', '2016-03-03');
【问题讨论】:
-
您的问题是什么?使用 ISO 8601 标准日期格式,一切正常。
-
'01/01/2016''2016-01-01'是字符串,而不是date值。由于邪恶的隐式数据类型转换,'2016-01-01'恰好可以转换为日期。请参阅手册了解如何正确指定数据值:hsqldb.org/doc/2.0/guide/…