You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

测试Repository类插入语句时遇SYSUTCDATETIME函数未找到错误求助

解决H2数据库中SYSUTCDATETIME函数不存在的问题

错误信息

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Function "SYSUTCDATETIME" not found; SQL statement:
insert into table name (cloumns1..x) values (?, ?, ?, SYSUTCDATETIME(), ?, ? , ?, SYSUTCDATETIME(),?); [90022-200]

解决方案

  • 配置H2兼容SQL Server模式
    在H2数据库的连接URL中添加MODE=SQLServer参数,让H2兼容SQL Server的特定函数,包括SYSUTCDATETIME。示例连接URL:

    jdbc:h2:mem:testdb;MODE=SQLServer;DB_CLOSE_DELAY=-1
    
  • 替换为H2原生支持的UTC时间函数
    直接将SQL中的SYSUTCDATETIME()替换为H2支持的UTC_TIMESTAMP(),两者都返回当前UTC时间,功能完全一致。

  • 通过框架注解自动生成时间
    在实体类的时间字段上使用框架注解自动处理时间插入,避免硬写数据库特定函数:

    • MyBatis-Plus场景:用@CreationTimestamp注解标注字段
    • JPA场景:用@ColumnDefault("CURRENT_TIMESTAMP")配合@Temporal(TemporalType.TIMESTAMP)

内容的提问来源于stack exchange,提问作者neha dahiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:40:50