将 DATE 函数与 HSQL 一起使用时出错
Posted
技术标签:
【中文标题】将 DATE 函数与 HSQL 一起使用时出错【英文标题】:error using DATE function with HSQL 【发布时间】:2013-12-20 21:14:29 【问题描述】:我有一个使用 SQL 访问 DB2 数据库的项目。在代码上运行 junit 测试用例时,我使用 HSQL 数据库。 java 项目通过 iBATIS 使用 SQL。
如果 HSQL 遇到 DATE
函数,例如 DATE(STATUS_CREATE_TS)
,我会遇到错误,有什么解决方案的想法吗?
--- 原因:java.sql.SQLException:用户缺少权限或找不到对象:DATE at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:98) 在 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) 在 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) 在 org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) 在 org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:203) 在 org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(SqlMapClientTemplate.java:268)
谢谢。
【问题讨论】:
错误信息是什么意思? --- 原因:java.sql.SQLException:用户缺少权限或找不到对象:DATE 在 org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:98) 【参考方案1】:该函数是 DB2 特有的,HSQLDB 不直接支持。
您可以将测试的函数定义为:
create function date(ts timestamp) returns date return cast(ts as date);
【讨论】:
感谢您的回复。在 HSQL 哪里定义这个函数? 这是一条SQL语句。你执行一次。 DB2 允许类似地定义函数。【参考方案2】:你试过HSQL设置吗:
SET DATABASE SQL SYNTAX DB2 TRUE
如 http://hsqldb.org/doc/2.0/guide/dbproperties-chapt.html 中所述(表 12.27)。
【讨论】:
我相信我最初尝试过这种方法,但没有奏效。我实施了 fredt 提出的解决方案,它奏效了。谢谢。以上是关于将 DATE 函数与 HSQL 一起使用时出错的主要内容,如果未能解决你的问题,请参考以下文章