2012-06-10 1 views
1

Я совершенно новый для Derby (и в основном базы данных в целом), и стараюсь, чтобы мои ноги были влажными с помощью Derby через Eclipse с использованием Java.Как вы получаете записи из базы данных Derby, которые были вставлены в течение последних 30 секунд?

Что я пытаюсь сделать, это сгенерировать отчет обо всех записях, находящихся в настоящее время в базе данных Derby за последние 30 секунд с момента создания отчета.

мне удалось получить то, что я хотел в MySQL со следующим:

SELECT * FROM table WHERE datetime > (now() - interval 30 second)

Есть ли эквивалент или подобная функциональность в Дерби?

ответ

1

К сожалению, Derby не поддерживает стандартную (ANSI) SQL-арифметику. Вы должны использовать функции JDBC побега:

c:\db-derby-10.8.2.2\bin>ij 
ij version 10.8 
ij> connect 'jdbc:derby:c:/temp/sotest'; 
ij> create table foo (datetime timestamp); 
0 rows inserted/updated/deleted 
ij> insert into foo values (current_timestamp); 
1 row inserted/updated/deleted 
ij> commit; 
ij> select * 
from foo 
where datetime > {fn timestampadd(SQL_TSI_DAY, -10, current_timestamp)}; 
> > DATETIME 
----------------------------- 
2012-06-10 12:32:48.859 

1 row selected 
ij> 

Полный список функций см Справочное руководство: http://db.apache.org/derby/docs/10.8/ref/rrefjdbc88908.html

+0

Я на самом деле пытался использовать эту команду раньше, но я продолжал получать следующее сообщение об ошибке: INTEGER является недействительным введите аргумент номер 2 TIMESTAMPDIFF. – Stephen

+0

@ Stephen: он работает для меня. Вам нужно будет показать нам код, который производит эту ошибку (и, пожалуйста, включите определение таблицы) –

+0

Несомненно, здесь это: SELECT * FROM app.user_count WHERE datetime> {fn timestampdiff (SQL_TSI_SECOND, -30, CURRENT_TIMESTAMP) }; – Stephen

 Смежные вопросы

  • Нет связанных вопросов^_^