如何过滤以UTC格式存储的dynamodb中的start_date
和end_date
之间的日期?
dynamodb.scan({
TableName : TEMP_TABLE_NAME,
FilterExpression : 'start_date between :start_date and :end_date',
ExpressionAttributeValues: {
":start_date": {
"S": "2017-08-16"
},
":end_date": {
"S": "2017-08-15"
}
}
}, function(err, data) {
console.log(err);
context.succeed(data);
});
答案 0 :(得分:0)
如果您以正确的格式存储日期,您应该能够执行BETWEEN操作。
问题是 - DynamoDB本身不支持日期/时间戳数据类型。
您可以以字符串或数字格式存储日期/时间戳。 AWS Docs
以字符串形式存储:
您可以使用字符串数据类型来表示日期或时间戳。 一种方法是使用ISO 8601字符串,如下所示 示例:
2016-02-15 2015-12-21T17:42:34Z 20150311T122706Z欲了解更多信息, 见http://en.wikipedia.org/wiki/ISO_8601。
数:
您可以使用数字数据类型来表示日期或时间戳。 一种方法是使用纪元时间 - 从那以后的秒数 1970年1月1日00:00:00 UTC。例如,纪元时间1437136300 代表2015年7月17日12:31:40 UTC。
有关详细信息,请参阅http://en.wikipedia.org/wiki/Unix_time。
只要您坚持使用适用于哪种数据类型的指南,就可以对它们执行相关操作(即:BETWEEN),因为它们将被设计为按字母数字排序(假设所有数据都是UTC)。 / p>