HSQL 和 MSSQL 日期部分参数
HSQL and MSSQL datepart parameter
我有一个嵌入式 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()))
在SQL服务器上运行正常,但在 HSQLDB 上运行失败:
org.hsqldb.HsqlException: user lacks privilege or object not found: MINUTE
我通过创建一个函数解决了 SYSDATETIME 的类似问题,但我不知道如何解决使用关键字的 mssql 和使用 varchar 的 hsqldb 之间的这种不兼容性。
关于我可以对我的 hsqldb 做些什么来完成这项工作有什么想法吗?甚至查询...
编辑:
我知道如何在 HSQLDB 中进行查询,重点是在 SQLServer 和 HSQLDB 中使用相同的查询。我可以定义一些名为 minute 的全局变量来表示值 'minute'.
谢谢!
您可以使用:
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。
我有一个嵌入式 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()))
在SQL服务器上运行正常,但在 HSQLDB 上运行失败:
org.hsqldb.HsqlException: user lacks privilege or object not found: MINUTE
我通过创建一个函数解决了 SYSDATETIME 的类似问题,但我不知道如何解决使用关键字的 mssql 和使用 varchar 的 hsqldb 之间的这种不兼容性。
关于我可以对我的 hsqldb 做些什么来完成这项工作有什么想法吗?甚至查询...
编辑: 我知道如何在 HSQLDB 中进行查询,重点是在 SQLServer 和 HSQLDB 中使用相同的查询。我可以定义一些名为 minute 的全局变量来表示值 'minute'.
谢谢!
您可以使用:
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。