我正在使用Java和Eclipse的Derby数据库。我有一个具有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子句中的条件。听起来很简单,但我遇到了这样的困难,我觉得我必须缺少一些基本原则。我认为转换为长时间和后退可能是路线,但遇到了同样的演员问题。
答案 0 :(得分:1)
时间戳声明为
public class Timestamp extends java.util.Date { ... }
因此,您无法将日期转换为timstamp,您可以从日期创建时间戳。
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执行此操作。