Использование функции sql DATEADD в java

Когда я запускаю запросы с использованием DATEADD, кажется, что база данных не распознает эту функцию. также, когда я просто запускаю select DATEADD(Month, -3, GETDATE()), я получаю:

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

Я добавил файл JAR из hsqldb-2.2.9, как вы можете видеть.

введите здесь описание изображения

Что мне здесь не хватает?


person Onca    schedule 27.08.2012    source источник
comment
что возвращает функция GETDATE()   -  person Mohammod Hossain    schedule 27.08.2012
comment
Вы используете Derby или HSQLDB? Вы включили обе базы данных, и ответ зависит от фактической используемой вами СУБД.   -  person a_horse_with_no_name    schedule 27.08.2012
comment
Так почему вы также включаете HSQLDB?   -  person a_horse_with_no_name    schedule 27.08.2012
comment
@a_horse_with_no_name - моя ошибка. Спасибо.   -  person Onca    schedule 27.08.2012


Ответы (3)


DATEADD не имеет функции DATEADD. Для этого вам нужно использовать JDBC-функцию 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)})
person a_horse_with_no_name    schedule 27.08.2012

ДОБАВЬТЕ ИЛИ ВЫЧИТАЙТЕ ОДИН ДЕНЬ В DERBY выберите rundate, {fn TIMESTAMPADD(SQL_TSI_DAY, -1, RUNDATE)} из tst.YOUTH

person Baruch Atta    schedule 18.12.2012

Для hsqldb:

DATEADD ( , , ) DATEADD ( 'месяц', 3, ДАТА '2008-11-22' )

Попытайся

выберите DATEADD (Месяц, -3, '2008-11-22')

Для Дерби:

Derby поддерживает escape-функцию JDBC TIMESTAMPADD.

TIMESTAMPDIFF( интервал, timestampExpression1, timestampExpression2 )

значения {fn timestampd(SQL_TSI_DAY, 1, timestamp('2010-12-31 23:59:59'))};

person Mohammod Hossain    schedule 27.08.2012
comment
В Дерби нет функции DateAdd - person a_horse_with_no_name; 27.08.2012
comment
Но Onca также включила Apache Derby. - person a_horse_with_no_name; 27.08.2012
comment
Этот SELECT также терпит неудачу. Итак, как я могу сделать это в дерби? - person Onca; 27.08.2012
comment
@Onca: см. мой ответ. И, пожалуйста, объясните, почему вы добавляете библиотеки HSQLDB, если используете Derby. - person a_horse_with_no_name; 27.08.2012