我想使用 sql 脚本将日期插入到我的 H2 数据库中。现在我有以下内容:
CREATE TABLE CUSTOMERS (
ID int NOT NULL,
FIRSTNAME varchar(50) NOT NULL,
LASTNAME varchar(50) NOT NULL,
GENDER varchar(50) NOT NULL,
COMPANYID varchar(50) NOT NULL,
EMAIL varchar(50) NOT NULL,
BIRTHDAY date NOT NULL,
CREATEDAT date NOT NULL,
UPDATEDAT date NOT NULL,
PRIMARY KEY (ID)
);
INSERT INTO CUSTOMERS (
ID,
FIRSTNAME,
LASTNAME,
GENDER,
COMPANYID,
EMAIL,
BIRTHDAY,
CREATEDAT,
UPDATEDAT
)
VALUES (
1,
'Lee',
'Diaz',
'male',
'159',
'vel.sapien.imperdiet@protonmail.ca',
'05-08-1912',
'13-12-2019',
'30-09-2021'
)
Run Code Online (Sandbox Code Playgroud)
由于某种原因,日期不起作用,但我不明白为什么。有人知道吗?
日期时间值有标准的 SQL 文字:
DATE '2022-12-31'对于DATE数据类型。TIME '23:59.59'、TIME '23.59.59.123456'等表示TIME数据类型。TIME WITH TIME ZONE '23:59:59+07:30'对于TIME WITH TIME ZONE数据类型。TIMESTAMP '2022-12-31 23.59.59'为了TIMESTAMP。TIMESTAMP WITH TIME ZONE '2022-12-31 23.59.59+07:30'为了TIMESTAMP WITH TIME ZONE。各种数据库系统可能支持自己的扩展。在 H2 中,您可以在插入语句中指定一个字符串'2022-12-31'而不是日期文字,很多人都会这样做。然而,在日期时间算术表达式中,这种替换可能不起作用,因为各种表达式对于不同的数据类型以不同的方式工作,'2022-12-31'是字符串,而不是日期。但其显式或隐式转换会DATE产生日期值。
H2 支持 ISO 8601 样式的日期时间文字,T而不是日期和时间之间的空格。(SQL 中的日期时间和间隔值通常与 ISO 8601 不同。)H2 支持带有时区文字的时间戳中的时区名称,但 H2 始终将这些时区转换为简单的时区偏移量。
H2支持负数年份和超过4位数字的年份。
在某些兼容模式中,您可以使用其他替代语法,但通常应该避免使用它们。
还有各种日期时间解析和格式化函数,但我认为您在这里不需要它们。