Using sql DATEADD function in java

时间秒杀一切 提交于 2019-11-28 05:12:35

问题


When I run queries using DATEADD it seems that the database does not recognize this function. also when I just run select DATEADD(Month, -3, GETDATE()) I'm getting:

Error code -1, SQL state 42X01: Syntax error: Encountered "<EOF>" at line 1, column 36.

I added the JAR file from hsqldb-2.2.9 as you can see

What am I missing here?


回答1:


Derby does not have a DATEADD function. You need to use the JDBC function timestampadd to achieve this:

select {fn TIMESTAMPADD(SQL_TSI_MONTH, -3, CURRENT_TIMESTAMP)}
from sysibm.sysdummy1

An alternative to using sysdummy1 is the ANSI standard values clause which works both in Derby and HSQLDB:

values ({fn TIMESTAMPADD(SQL_TSI_MONTH, -3, CURRENT_TIMESTAMP)})



回答2:


ADD OR SUBTRACT ONE DAY IN DERBY select rundate, {fn TIMESTAMPADD(SQL_TSI_DAY, -1, RUNDATE)} from tst.YOUTH




回答3:


For hsqldb:

DATEADD ( , , ) DATEADD ( 'month', 3, DATE '2008-11-22' )

Try it

select DATEADD(Month, -3, '2008-11-22')

For Derby:

Derby supports the JDBC escape function TIMESTAMPADD

TIMESTAMPDIFF( interval, timestampExpression1, timestampExpression2 )

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



来源:https://stackoverflow.com/questions/12138164/using-sql-dateadd-function-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!