【发布时间】:2013-12-17 09:45:21
【问题描述】:
我们使用 HSQLDB for JUnits,我们的生产数据库是 Oracle。
我有一个表,其中有一个字段(类型是 Oracle 中的时间戳),其中包含有关一天中某个重要时间的信息。
我想在脚本中为 JUnit 准备测试数据,但失败了。
我在 Oracle DB 中可以做的基本思想是
SYSDATE - TRUNC(SYSDATE)
当我在 HSQLDB 中对 CURRENT_TIME 进行相同尝试时,出现错误:
org.hsqldb.HsqlException: incompatible data type in conversion
我得到的下一个想法是在“空日期”中添加时间,尝试过:
DATE '0000-01-01'
但是得到了
org.hsqldb.HsqlException: data exception: invalid datetime format
DATE '2013-01-01' 很奇怪,它工作正常,也许初始零是问题...不,它们不是,DATE '0-01-01' 也一样...
在这个阶段,我已经有点疯了(我想我可以在一秒钟内在 Oracle 中完成,我在这里花了几个小时)。
来自documentation 我试图找到一些创建所需结果的函数组合,但不幸的是我发现文档不清楚。初读时似乎如此,但尝试后我很惊讶为什么会这样
DATEADD( 'hour', 1, CURRENT_DATE )
工作正常,而
DATEADD( 'hour', 1, CURRENT_TIME)
以
结尾org.hsqldb.HsqlException: incompatible data type in conversion
相反,DATE_ADD 对两者都有效,并且两个函数的参数类型在文档中是相同的:-/
我相信我能做到,比如
// 4x call of DATEADD, datetime not working as described above
date - years - months - days + seconds_from_midnight
但必须有一些易于使用的东西(我希望如此)。
HSQLDB 版本:2.3.1
【问题讨论】:
标签: hsqldb