基于日期的DynamoDB表扫描-Java

基于日期的DynamoDB表扫描-Java,java,date,amazon-dynamodb,Java,Date,Amazon Dynamodb,在我的应用程序中,我需要定期检查DynamoDB表的更新。确切地说,我需要检查的字段不是散列键,因此我无法查询——我需要扫描。 我试图构建的扫描过滤器需要检查一个包含日期的字段(在表中编码为字符串),我使用的逻辑是询问在最近一小时内创建或更新的所有记录。我正在使用的代码片段如下: Condition scanFilterCondition = new Condition() .withComparisonOperator(ComparisonOperator.BETWEEN.toString(

在我的应用程序中,我需要定期检查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日期的信息


关于故障有什么想法吗?

字符串是否作为历元时间戳写入表中(例如138219953)?有或没有毫秒

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

如果不是这样,请使用相关字段中的样本数据进行评论

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

DateTimeFormatter dateFormatter=ISODateTimeFormat.dateTime().withZoneUTC()

String isoDate=dateFormatter.print(当前时间)

谢谢您的回复。不幸的是,DynamoDB表上的日期不是以毫秒为单位的。样本日期为“2013-10-18T17:49:28.918Z”,谢谢!添加了对ISODateTime的支持,就像您在DynamoDB中所做的一样-希望它对您有所帮助,不要真的收到您的评论。你建议我们添加这样的支持吗?不-我的意思是我已经编辑了我的答案(见上文),以包含一个代码,该代码创建的字符串的格式与在DynamoDB字段中找到的相同