在java中使用sql DATEADD函数
Posted
技术标签:
【中文标题】在java中使用sql DATEADD函数【英文标题】:Using sql DATEADD function in java 【发布时间】:2012-08-21 17:10:44 【问题描述】:当我使用 DATEADD 运行查询时,数据库似乎无法识别此函数。
当我刚刚运行select DATEADD(Month, -3, GETDATE())
时,我得到了:
Error code -1, SQL state 42X01: Syntax error: Encountered "<EOF>" at line 1, column 36.
如您所见,我从 hsqldb-2.2.9 添加了 JAR 文件
我在这里错过了什么?
【问题讨论】:
什么是返回GETDATE()函数 您使用的是 Derby 还是 HSQLDB?您已经包含了这两个数据库,答案取决于您使用的实际 DBMS。 那么为什么还要包含 HSQLDB? @a_horse_with_no_name - 我的错。谢谢。 【参考方案1】:在德比中加减一天 选择运行日期,fn TIMESTAMPADD(SQL_TSI_DAY, -1, RUNDATE) from tst.YOUTH
【讨论】:
【参考方案2】:对于 hsqldb:
添加日期 ( , , ) DATEADD ('月', 3, DATE '2008-11-22')
试试看
选择 DATEADD(Month, -3, '2008-11-22')
德比:
Derby 支持 JDBC 转义函数 TIMESTAMPADD
TIMESTAMPDIFF(间隔,timestampExpression1,timestampExpression2)
值 fn timestampadd(SQL_TSI_DAY, 1, timestamp('2010-12-31 23:59:59'));
【讨论】:
Derby 没有 DateAdd 函数 但 Onca 还包括 Apache Derby。 这个 SELECT 也失败了。那么我该如何在德比中做到这一点呢? @Onca:看我的回答。如果您使用 Derby,请说明为什么要添加 HSQLDB 库【参考方案3】:Derby 没有 DATEADD 函数。你需要使用JDBC functiontimestampadd
来实现这个:
select fn TIMESTAMPADD(SQL_TSI_MONTH, -3, CURRENT_TIMESTAMP)
from sysibm.sysdummy1
使用 sysdummy1 的替代方法是 ANSI 标准 values
子句,它在 Derby 和 HSQLDB 中都有效:
values (fn TIMESTAMPADD(SQL_TSI_MONTH, -3, CURRENT_TIMESTAMP))
【讨论】:
以上是关于在java中使用sql DATEADD函数的主要内容,如果未能解决你的问题,请参考以下文章