2012-08-27 64 views
4

當我使用DATEADD運行查詢時,似乎數據庫無法識別此函數。 還當我就跑select DATEADD(Month, -3, GETDATE())我越來越:在java中使用sql DATEADD函數

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

我說從HSQLDB-2.2.9 JAR文件,你可以看到

enter image description here

缺少什麼我在這裏?

+0

什麼是返回GETDATE()函數 –

+1

您使用的是Derby還是HSQLDB?你已經包含了兩個數據庫,答案取決於你使用的實際DBMS。 –

+0

我在使用derby – Onca

回答

8

德比沒有DATEADD函數。您需要使用JDBC functiontimestampadd來實現這一目標:

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

使用sysdummy1另一種是ANSI標準values條款,無論是在德比和HSQLDB工作:

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

您太棒了。謝謝。 – Onca

0

對於HSQLDB:

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

試試吧

選擇DATEADD(月 - 3, '2008-11-22')

對於德比:

德比支持JDBC轉義函數TIMESTAMPADD

TIMESTAMPDIFF(間隔,timestampExpression1,timestampExpression2)

值{FN TIMESTAMPADD(SQL_TSI_DAY,1,時間戳( '2010-12-31 23時59分59秒'))};

+1

Derby沒有DateAdd功能 –

+0

請按照鏈接http://hsqldb.org/doc/guide/builtinfunctions-chapt.html –

+0

但Onca還包含Apache Derby。 –

0

加上或減去一天DERBY 從tst.YOUTH選擇rundate,{fn TIMESTAMPADD(SQL_TSI_DAY,-1,RUNDATE)}