我在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子句中的条件。听起来很简单,但是我有这样的困难,以至于我必须缺少一些基本原理。我认为转换为长途旅行可能是路线,但遇到了相同的投放问题。
最佳答案
时间戳记声明为
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执行此操作。