基于日期的DynamoDB表扫描 - Java

时间:2013-10-17 09:31:10

标签: java date amazon-dynamodb

我的应用程序中有一个要求,我需要定期检查DynamoDB表以获取更新。确切地说,我需要检查的字段不是哈希键,因此我无法查询 - 我需要扫描。 我正在尝试构建的扫描过滤器需要检查包含日期的字段(在表中编码为字符串),我使用的逻辑是询问在过去一小时内创建或更新的所有记录。我正在使用的片段如下:

 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日期的事情。

关于错误的任何想法?

1 个答案:

答案 0 :(得分:0)

表中是否将字符串写为EPOCH时间戳(例如1382199953)?有无毫秒?

默认toString()会返回基于区域设置的人类可读字符串(例如dow mon dd hh:mm:ss zzz yyyy)。

如果情况并非如此,请使用相关字段中的示例数据进行评论。

使用Joda编辑以支持ISODateTime格式:

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