我的应用程序中有一个要求,我需要定期检查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日期的事情。
关于错误的任何想法?
答案 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);