HSQLDB:“;无效的日期时间格式";适用于年月日,但不适用于年月日

HSQLDB:“;无效的日期时间格式";适用于年月日,但不适用于年月日,sql,jdbc,hsqldb,Sql,Jdbc,Hsqldb,我的表格创建如下所示: 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 ); 以下是表格中的inser

我的表格创建如下所示:

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语句:

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.jdbcuti.sqlException(未知源) ~[hsqldb-2.3.2.jar:2.3.2]at org.hsqldb.jdbc.jdbcuti.sqlException(未知源) ~[hsqldb-2.3.2.jar:2.3.2]at org.hsqldb.jdbc.JDBCStatement.fetchResult(未知源) ~[hsqldb-2.3.2.jar:2.3.2]at org.hsqldb.jdbc.JDBCStatement.execute(未知源) ~[hsqldb-2.3.2.jar:2.3.2]at 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');
有人能告诉我怎么了吗

答案很简单,如果日期采用
'yyyy-mm-dd'
格式,HSQLDB将只接受日期的字符串文本。它在某种程度上是有帮助的,因为它允许我们从“适当的”HSQLDB日期文字值中省略
DATE
关键字

日期“2016-01-02”
让我们简单地提供

“2016-01-02”

但它不会接受
'01/02/2016'
(无论如何,这是不明确的)或。

您的问题是什么?使用ISO 8601标准日期格式,一切正常。
'01/01/2016'
'2016-01-01'
是字符串,而不是
日期
值<代码>'2016-01-01'由于邪恶的隐式数据类型转换,恰好可以转换为日期。请参阅手册,了解如何正确指定数据值:2016年1月1日并不含糊,因为一天和一个月碰巧以任何方式计算。01/02/2016... 这不是含糊不清的;)@乔尔科霍恩——“愚蠢的”我感谢您的更正。如果您想将非标准格式转换为日期('01/01/2016','DD/MM/YYYY'))