【问题标题】:amazon-dynamodb and filtering by dateamazon-dynamodb 和按日期过滤
【发布时间】:2017-11-17 09:43:25
【问题描述】:

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

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

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

【问题讨论】:

    标签: amazon-dynamodb


    【解决方案1】:

    是的,只要日期以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。

    Data types

    【讨论】:

    • 好的,我明白了。但是这个 myDate >= :myDate 在我的例子中是基于纯字符串比较的,对吧?有两个日期 2016-02-15 和 2016-02-14 第一个更大,因为最后一个字符“5”大于“4”,对吧?
    • 似乎纪元时间是最好的解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 2019-03-01
    相关资源
    最近更新 更多