временная метка java.sql.time против даты - PullRequest
1 голос
/ 16 января 2012

Я использую базу данных Derby с Java и Eclipse.У меня есть таблица с полем TIMESTAMP, и я использую модель для заполнения из нее JTable.Я считаю метку времени и данные, а также java.sql и java.utils очень запутанными.Следующая строка кода ошибки с cannot cast date to timestamp.mod - это модель интерфейса между таблицами Derby и JTable.

int rowcount = mod.getRowCount();
java.sql.Timestamp ts = (java.sql.Timestamp) mod.getValueAt(rowcount-1,1);

Моя цель - получить дату самой последней записи и вычесть 30 дней, а затем выполнить SQL-запрос к той же базе данных, чтобы найти все записи, более поздние, чем эта дата.Как восстановить первую временную метку, вычтите 30 дней, а затем создайте запрос с результатом вычитания в качестве условия в предложении WHERE.Звучит просто, но я испытываю такие трудности, что мне кажется, что мне не хватает какого-то фундаментального принципа.Я думал, что переход к длинному и обратно может быть маршрутом, но столкнулся с той же проблемой приведения.

1 Ответ

1 голос
/ 16 января 2012

Метка времени объявляется как

public class Timestamp extends java.util.Date { ... }

Поэтому вы не можете привести дату к отметке времени, вы можете создать отметку времени из даты.

Timstamp ts = new Timestamp( date.getTime() );

Чтобы вычесть 30 дней, эта последовательность может быть полезна:

Calendar cal = new GregorianCalendar();
cal.setTime( date.getTime() );
cal.add( Calendar.DAY_OF_MONTH, -30 );
Date d30 = cal.getTime();

В любом случае, я бы попытался выполнить это, используя только SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...