我正在使用带有 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 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 来执行此操作。
关于java.sql.timestamp 与日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8877664/