0

私のアプリケーションでは、DynamoDB テーブルの更新を定期的にチェックする必要があるという要件があります。正確には、チェックする必要があるフィールドはハッシュ キーではないため、クエリを実行できません。スキャンする必要があります。私が作成しようとしているスキャン フィルターは、日付を含むフィールド (表では文字列としてコード化されています) をチェックする必要があり、私が使用しているロジックは、過去 1 時間に作成または更新されたすべてのレコードを要求するものです。私が使用しているスニペットは以下のとおりです。

 Condition scanFilterCondition = new Condition()
.withComparisonOperator(ComparisonOperator.BETWEEN.toString())
.withAttributeValueList(new AttributeValue().withS(new Date(currentTime-3600000).toString()), 
new AttributeValue().withS(new Date(currentTime).toString()));

正しいようですが、常に空のセットを返すように見えるため、明らかに正しくありません。

これが正しくない理由を理解するためにグーグルで検索してきましたが、DyanmoDB の日付のスキャン/クエリに関するものは見つかりませんでした。

障害に関するアイデアはありますか?

4

1 に答える 1

0

表に書かれている文字列は EPOCH タイムスタンプ (例: 1382199953) ですか? ミリ秒の有無にかかわらず?

デフォルトでtoString()は、ロケールベースの人間が判読できる文字列 (例: dow mon dd hh:mm:ss zzz yyyy) を返します。

そうでない場合は、問題のフィールドのサンプル データをコメントしてください。

Joda を使用してISODateTime形式をサポートするように編集します。

DateTimeFormatter dateFormatter = ISODateTimeFormat.dateTime().withZoneUTC(); String isoDate = dateFormatter.print(currentTime);

于 2013-10-19T16:30:44.120 に答える