我有一个嵌入式HSQLDB数据库用于测试。生产数据库是SQL Server 2012。
我正在使用本机查询,其中在哪里有这个谓词:
and (pc.SOME_DATE IS NOT NULL
AND pc.SOME_DATE BETWEEN SYSDATETIME() AND DATEADD(minute, c.MINUTES_TO_ADD, SYSDATETIME()))
并在SQLServer中运行正常,但在HSQLDB上失败,并显示以下信息:
org.hsqldb.HsqlException: user lacks privilege or object not found: MINUTE
我通过创建一个函数解决了SYSDATETIME的类似问题,但是我不知道如何解决使用关键字的mssql和使用varchar的hsqldb之间的不兼容问题。
关于我可以对hsqldb做些什么的任何想法?甚至查询...
编辑:我知道如何使查询在HSQLDB中工作,关键是要在SQLServer和HSQLDB中具有相同的查询。我可以定义一些名为分钟的全局变量来表示值“分钟”。
谢谢!
您可以使用:
DATEADD('minute', c.MINUTES_TO_ADD, SYSDATETIME())
同一任务还有其他功能:
TIMESTAMPADD ( SQL_TSI_MINUTE, c.MINUTES_TO_ADD, SYSDATETIME() )
在下一版本的HSQLDB中,SQLServer兼容性可能会得到改进,以支持查询而无需进行任何更改。
更新:添加了对DATEADD和DATEDIFF函数的未引用令牌的支持,并将其提交给SVN / base / trunk。签出该SVN目录后,可以使用Gradle或Ant轻松编译jar。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句