在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函数的主要内容,如果未能解决你的问题,请参考以下文章

oracle dateadd函数

SQL-日期函数

将 VB Date() 和 DateAdd 函数转换为 PHP

sql 中Dateadd()函数的用法

sql server Dateadd()函数

T-SQL Date函数,Integer值为date参数