amazon-dynamodb 和按日期过滤

Tho*_*hen 10 amazon-dynamodb

我有一个 dynamodb 表,其中有一个 GlobalSecondaryIndex ,其中日期字段作为键类型“range”的属性。值以 ISO 格式“YYYY-MM-DD”存储。我想在节点中仅访问日期大于特定日期的记录。它似乎适用于我的查询的参数:

KeyConditionExpression: 'myDate >= :myDate',
ExpressionAttributeValues: {   
    ':myDate': '2017-11-17'
}
Run Code Online (Sandbox Code Playgroud)

不过我不太明白。从技术上讲,日期是一个字符串。信任字符串比较是否可靠,还是应该以不同的方式完成?

not*_*est 9

是的,只要日期以YYYY-MM-DD格式存储,您就可以继续此操作。

\n\n

DynamoDB 没有单独的日期数据类型。日期可以存储为字符串或数字。

\n\n
Date    S (string type). The Date values are stored as ISO-8601 formatted strings.\n
Run Code Online (Sandbox Code Playgroud)\n\n

将日期存储为字符串:-

\n\n
\n

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

\n
\n\n
    \n
  • 2016-02-15

  • \n
  • 2015-12-21T17:42:34Z

  • \n
  • 20150311T122706Z

  • \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\n

数据类型

\n

  • 好吧,这我明白了。但是我的示例中的 myDate >= :myDate 是基于纯字符串比较,对吧?有两个日期 2016-02-15 和 2016-02-14 第一个日期更大,因为最后一个字符“5”大于“4”,对吧? (3认同)