首页 > 解决方案 > 在 H2 数据库上插入当前日期和时间

问题描述

我想在我的 H2 数据库中插入带有特定时间的当前日期

我这样做:

INSERT INTO PUBLIC.PROJECT(ID, LIBELLE, DESCRIPTION, STATUT, DATE_CREATION, DATE_MODIFICATION, USER_CREATEUR_ID, REFERENT_ID, DATE_DEBUT, DATE_FIN, TYPE, STATUT_PROJET) VALUES
(25001, 'Projet 1', NULL, 'INITIEE', CURRENT_DATE, CURRENT_DATE, NULL, 3, current_date -2 + time '23:00', current_date , NULL, NULL);

我有这个错误:

不可能的 danalyser {0} 常量 {1} 无法解析 {0} 常量 {1};SQL 语句:

怎么了 ?

标签: sqltimeh2

解决方案


H2 只能从 1.4.198 版本开始解析非标准时间文字TIME '23:00'(请注意,这是一个 beta 质量版本,请使用一些较新的版本来代替它)。

如果您需要使用一些旧版本,例如 1.4.197,请使用标准文字TIME '23:00:00'。如果可以升级,最好还是使用标准文字。

请注意,整个结构current_date -2 + time '23:00'很奇怪。旧版本的 H2 可能需要它,但如果您决定升级,请使用更正常的日期时间算法和间隔,CURRENT_DATE - INTERVAL '2' DAY + TIME '23:00:00'而不是完全非标准的东西。符合标准的表达式应该是CAST(CURRENT_DATE AS TIMESTAMP) - INTERVAL '2' DAY + INTERVAL '23' HOUR,但看起来不太好。


推荐阅读