Sql 在H2数据库中自动生成主键作为当前日期时间

Sql 在H2数据库中自动生成主键作为当前日期时间,sql,database,timestamp,primary-key,h2,Sql,Database,Timestamp,Primary Key,H2,我必须在H2中创建一个主键为yyyymmddhhmmssss格式的表。这样,每次插入都会自动采用所述格式的当前日期时间 CREATE TABLE TEST_TABLE(ID BIGINT DEFAULT CURRENT_TIMESTAMP() PRIMARY KEY, NAME VARCHAR(255)); 问题是CURRENT\u TIMESTAMP()格式是yyyy-MM-dd HH:MM:ss.SSS。如何以所需格式获取它 您可以在H2控制台中尝试: call formatdatetim

我必须在
H2
中创建一个主键为
yyyymmddhhmmssss
格式的表。这样,每次插入都会自动采用所述格式的当前日期时间

CREATE TABLE TEST_TABLE(ID BIGINT DEFAULT CURRENT_TIMESTAMP() PRIMARY KEY, NAME VARCHAR(255));

问题是
CURRENT\u TIMESTAMP()
格式是
yyyy-MM-dd HH:MM:ss.SSS
。如何以所需格式获取它

您可以在H2控制台中尝试:

call formatdatetime(now(),'yyyyMMddHHmmssSSS');
这将为您提供一个格式正确的字符串。现在需要将其转换为bigint

call cast(formatdatetime(now(),'yyyyMMddHHmmssSSS') as bigint);
最后一步:相应地更改SQL

CREATE TABLE TEST_TABLE(
  ID BIGINT DEFAULT CAST(FORMATDATETIME(CURRENT_TIMESTAMP(), 'yyyyMMddHHmmssSSS') AS BIGINT) PRIMARY KEY,
  NAME VARCHAR(255)
);
在H2 1.3和1.4上测试


注意事项:请使用事务和空格插入…

我将一个标记更改为SQL,以便在您的问题和我的答案中突出显示正确的语法。希望答案有助于解决您的问题。这对我来说很有效,很抱歉回复太晚。我直接执行了3td sql,为什么我需要前两个sql?“只是为了验证这一点吗?”livinggourmand说,“是的,前两个人只是为了通过实验进行教育。”。很高兴知道完整的第三个SQL帮助了您