我需要忽略数据库中超过 10 分钟的记录。但是,数据库服务器与应用服务器位于不同的时区。我试图利用时间戳列值中的时区详细信息,但似乎他们没有将时区详细信息存储在该列值中(设计不好?)。但是,我找到了一种使用查询获取数据库实例信息的方法:
select dbtimezone from dual.
但是,java 中的大多数实现通过名称而不是偏移信息来支持时区。我需要能够将此偏移量准确地转换为时区(EST 等),这样我就不会在我的计算中错过任何与 DST 相关的时间。像这样:
TimeZone dbZone = TimeZone.getTimeZone(10000); // offset is +10000
Calendar cal = Calendar.getInstance(dbZone);
cal.setTime(new Date());
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
df.setTimeZone(dbZone);
Date parsedDate = df.parse(df.format(cal.getTime()));
该计划是将当前客户端/应用程序时间转换为数据库特定时区时间并执行两者之间的差异。
由于某些限制,这无法在查询中完成。请不要让我写查询以获取最新记录等。必须用 Java 完成。
有小费吗?