DB から 10 分以上経過したレコードを無視する必要があります。ただし、DB サーバーはアプリ サーバーとは異なるタイム ゾーンに存在します。タイムスタンプ列の値からタイム ゾーンの詳細を利用しようとしましたが、その列の値にタイム ゾーンの詳細が格納されていないようです (設計が悪い?)。ただし、クエリを使用して DB インスタンスのこの情報を取得する方法を見つけました。
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()));
計画は、現在のクライアント/アプリの時間を DB 固有のタイムゾーン時間に変換し、2 つの時間差を実行することです。
これは、いくつかの制約によりクエリでは実行できません。最新のレコードなどを取得するためのクエリを作成するように私に依頼しないでください。Java で実行する必要があります。
任意のヒント?