【问题标题】:Auto generate primary key as current date time in H2 database在 H2 数据库中自动生成主键作为当前日期时间
【发布时间】:2015-09-17 07:49:03
【问题描述】:

我必须使用yyyyMMddHHmmssSSS 格式的主键以H2 创建一个表。这样每次插入都会自动采用上述格式的当前日期时间。

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

问题是CURRENT_TIMESTAMP() 格式是yyyy-MM-dd HH:mm:ss.SSS。我怎样才能获得所需的格式。

【问题讨论】:

  • 我将一个标签更改为 SQL,以便在您的问题和我的答案中都突出显示正确的语法。希望答案有助于解决您的问题。

标签: sql database timestamp primary-key h2


【解决方案1】:

你可以在 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 上测试。

注意事项:请使用事务并留出插入空间...

【讨论】:

  • 这对我有用,抱歉回复晚了。我直接执行了 3td sql,为什么我需要前 2 个 sql?只是为了验证是吗?
  • @livinggourmand 是的,前两个只是为了通过实验进行教育。很高兴知道完整的第 3 个 SQL 对您有所帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
  • 2014-01-27
  • 2018-12-17
  • 2020-04-02
  • 1970-01-01
  • 2019-06-07
相关资源
最近更新 更多