如何在dynamodb中过滤startdate和enddate之间的日期,该日期以UTC格式存储

时间:2017-08-17 13:04:32

标签: amazon-dynamodb

如何过滤以UTC格式存储的dynamodb中的start_dateend_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);
});

1 个答案:

答案 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>