2013-10-17 60 views
0

我的應用程序中有一個需求,我需要定期檢查DynamoDB表以獲取更新。確切地說,我需要檢查的字段不是散列鍵,因此我無法查詢 - 我需要掃描。 我正在嘗試構建的掃描過濾器需要檢查包含日期的字段(在表中編碼爲字符串),並且我正在使用的邏輯是詢問在過去一小時內創建或更新的所有記錄。我使用的片斷如下:基於日期的DynamoDB表掃描 - Java

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

這似乎是正確的,但它似乎總是返回一個空集,因此是ovviously不正確的。

我一直在搜索,以瞭解爲什麼這是不正確的,但我還沒有找到任何關於日期掃描/查詢DyanmoDB的東西。

有關故障的任何想法?

回答

0

表中的字符串是否作爲EPOCH時間戳寫入(例如1382199953)?有或沒有毫秒?

默認toString()返回一個基於語言環境的人類可讀字符串(例如dow mon dd hh:mm:ss zzz yyyy)。

如果不是這種情況,請使用相關字段中的示例數據進行評論。

編輯,以支持使用喬達ISODateTime格式:

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

+0

感謝您的答覆。不幸的是,DynamoDB表中的日期不是以毫秒寫入的。樣本日期是 「2013-10-18T17:49:28.918Z」 謝謝! – Diferdin

+0

像您在DynamoDB中一樣添加了對ISODateTime的支持 - 希望它可以幫助 –

+0

對不起,沒有真正得到您的評論。你是否建議我們增加這種支持? – Diferdin