如何在dynamodb中过滤以UTC格式存储的开始日期和结束日期之间的日期

Akh*_*dey 3 amazon-dynamodb

如何过滤 dynamodb 之间start_dateend_date以 UTC 格式存储的日期?

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);
});
Run Code Online (Sandbox Code Playgroud)

Abh*_*han 5

如果您以正确的格式存储日期,您应该能够执行 BETWEEN 操作。

\n\n

问题是 - DynamoDB 本身并不支持日期/时间戳数据类型。

\n\n

您可以以字符串或数字格式存储日期/时间戳。AWS 文档

\n\n

存储为字符串:

\n\n
\n

您可以使用字符串数据类型来表示日期或时间戳。\n 一种方法是使用 ISO 8601 字符串,如以下示例所示\n:

\n\n

2016-02-15 2015-12-21T17:42:34Z 20150311T122706Z 有关详细信息,\n 请参阅http://en.wikipedia.org/wiki/ISO_8601

\n
\n\n

数字:

\n\n
\n

您可以使用数字数据类型来表示日期或时间戳。\n 一种方法是使用纪元时间\xe2\x80\x94自 1970 年 1 月 1 日 00:00:00 UTC 起的秒数例如,纪元时间 1437136300\n 表示 2015 年 7 月 17 日 12:31:40 UTC。

\n\n

有关更多信息,请参阅http://en.wikipedia.org/wiki/Unix_time

\n
\n\n

只要您遵守所使用的数据类型的准则,您就可以对它们执行相关操作(即:BETWEEN),因为它们将被设计为按字母数字排序(假设所有数据都采用 UTC)。

\n