HSQLDB:dd/mm/yyyy 但不是 yyyy-mm-dd 的“无效日期时间格式”

Sub*_*shi 5 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
);
Run Code Online (Sandbox Code Playgroud)

以下是表中的插入语句:

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');
Run Code Online (Sandbox Code Playgroud)

不幸的是,我得到

引起:java.sql.SQLDataException:数据异常:org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2] at org.hsqldb.jdbc 处的日期时间格式无效。 JDBCUtil.sqlException(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2] at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source) ~[hsqldb-2.3.2.jar:2.3.2] at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source) ~[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');
Run Code Online (Sandbox Code Playgroud)

Gor*_*son 5

有人可以告诉我有什么问题吗?

答案很简单,HSQLDB 只接受符合'yyyy-mm-dd'格式的日期字符串文字。它愿意在某种程度上有所帮助,因为它将允许我们DATE从“正确的”HSQLDB 日期文字值中省略关键字

DATE '2016-01-02'
Run Code Online (Sandbox Code Playgroud)

让我们简单地提供

'2016-01-02'
Run Code Online (Sandbox Code Playgroud)

但它不会接受'01/02/2016'(无论如何这是模棱两可的)或我们愚蠢的人类可以表示日期许多其他方式中的任何一种