Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon dynamodb amazon dynamodb和按日期过滤_Amazon Dynamodb - Fatal编程技术网

Amazon dynamodb amazon dynamodb和按日期过滤

Amazon dynamodb amazon dynamodb和按日期过滤,amazon-dynamodb,Amazon Dynamodb,我有一个dynamodb表,它有一个GlobalSecondaryIndex,带有一个日期字段作为keytype“range”属性。值以ISO格式“YYYY-MM-DD”存储。 我只想在节点中访问日期大于某个日期的记录。 它似乎适用于我的查询的一个参数: KeyConditionExpression: 'myDate >= :myDate', ExpressionAttributeValues: { ':myDate': '2017-11-17' } 但是我不太明白。从技术

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

KeyConditionExpression: 'myDate >= :myDate',
ExpressionAttributeValues: {   
    ':myDate': '2017-11-17'
}

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

是的,只要日期以
YYYY-MM-DD
格式存储,您就可以进行中继

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

Date    S (string type). The Date values are stored as ISO-8601 formatted strings.
将日期存储为字符串:-

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

  • 2016-02-15

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

  • 20150311T122706Z

将日期存储为数字:-

可以使用数字数据类型表示日期或时间戳。 实现这一点的一种方法是使用历元时间,即自 1970年1月1日00:00:00 UTC。例如,纪元时间1437136300 代表2015年7月17日12:31:40 UTC


好的,我明白了。但是我的示例中的myDate>=:myDate是基于普通字符串比较的,对吗?有两个日期2016-02-15和2016-02-14,第一个更大,因为最后一个字符“5”大于“4”,对吗?似乎大纪元时间是最好的解决方案