2

我有一个问题,mysql中datediff的语法与hsqldb中的不同:

mysql: datediff(date1,date2)
hsqldb: datediff(interval,date1,date2)

hibernate 中的方言通常可以解决这些问题,但是我似乎无法找到为 hibernate 创建 datediff 限制的方法。这是一个真正的麻烦,因为它阻止我使用内存中的 hsql 数据库进行单元测试,因为我必须在 sql 语句中“硬编码” datediff 的格式。

如果有人对此事有任何建议,将不胜感激。

4

1 回答 1

4

我想说最简单的解决方案是创建自己的自定义 HSQLDB 方言,扩展现有的 HSQLDB 方言。然后,在构造函数中,注册一个函数来处理 datediff(date1, date2) 以转换为 datediff(interval, date1, date2),前提是间隔是静态值。像这样的东西:

registerFunction( "datediff", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datediff(interval, ?1, ?2)" ) );
于 2011-01-06T12:44:46.423 回答