在java中使用sql DATEADD函数

时间:2012-08-27 07:56:01

标签: sql derby date-arithmetic dateadd

当我使用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文件,如您所见

enter image description here

我在这里缺少什么?

3 个答案:

答案 0 :(得分:8)

Derby没有DATEADD功能。您需要使用JDBC function timestampadd来实现此目的:

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)})

答案 1 :(得分:1)

在德比中添加或减少一天 从tst.YOUTH中选择rundate,{fn TIMESTAMPADD(SQL_TSI_DAY,-1,RUNDATE)}

答案 2 :(得分:0)

对于hsqldb:

DATEADD(,,)     DATEADD('月',3,日期'2008-11-22')

试试吧

选择DATEADD(月,-3,'2008-11-22')

对于德比:

Derby支持JDBC转义函数TIMESTAMPADD

TIMESTAMPDIFF(interval,timestampExpression1,timestampExpression2)

值{fn timestampadd(SQL_TSI_DAY,1,timestamp('2010-12-31 23:59:59'))};