当前位置: 首页 > 知识库问答 >
问题:

DynamoDb查询存储日期

苏健柏
2023-03-14

我有一个解析模板,它将从appsync查询中获取开始日期作为日期。但我在迪纳摩的约会是有日期时间戳的。我们如何在没有时间的情况下比较这两个日期。以下是我的解析器模板查询:

 "version": "2018-05-29",
 "operation": "Query", 
 "query": {
  "expression": "Id = :Id and startDate =:date",
  "expressionValues": {
    #set( $Id = 
      $util.dynamodb.toDynamoDBJson("fixture#${ctx.args.input.Id}") )
    ":Id": $Id,
    #set( $date = $util.dynamodb.toDynamoDBJson($ctx.args.input.date)
    ":date": $date
  }
}

共有1个答案

阎功
2023-03-14

DynamoDB不了解日期。根据您的需求,有两种方法可以实现这一点,具体取决于DynamoDB中时间戳的格式。

1-如果您将时间戳存储为“自纪元以来的毫秒/秒”,您可以使用以下方式将AWSDate(即ISO8601)转换为纪元毫秒/秒时间戳

$util.time.parseISO8601ToEpochMilli秒("2018-02-01T17:21:05.180 08:00")

然后使用介于:startDate和:endDate之间的过滤器根据输入日期查询表。请注意

结束日期(秒)=开始日期86400

结束日期(毫秒)=开始日期86400000

2-如果使用时间戳的字符串表示,则可能需要添加全局二级索引(GSI),其中日期字段作为keytype“range”属性。在这个链接、这个链接和这个链接上有一些很好的解释和建议的解决方案。

我希望这对你有帮助。

 类似资料:
  • 您好,从我的问题开始:Windows Azure表访问延迟分区键和行键选择有关我在 Azure 存储帐户中组织数据的方式。我有一个表存储方案,旨在存储有关实体的信息。 大约有4000-5000个实体。共有6种实体类型,类型大致均匀分布。所以每个大约800英尺。 参数键:实体类型-日期 行键:实体标识 随着问题的详细说明,我一直遇到延迟问题,查询多个分区似乎需要很长时间。 基本上,一个可能的解决方案

  • 我刚开始在DynamoDB上建一个社交网站。 我将有相当数量的数据与一个用户相关,我计划将这些全部放入一个表中--例如: 用户ID 出生日期 头发 照片URL 详细信息 可能有几百个属性。 问题: 将这么多数据放入一个表中有什么问题吗? 我如何查询该数据(我是否可以执行类似这样的查询:“所有在这个年龄,这个颜色头发,这个位置,并且这次登录的成员)-假设所有这些数据都包含在表中? 如果一个表的内容很

  • 我对DynamoDB上的查询/扫描限制有疑问。 我的表有1000条记录,对所有记录的查询都返回50个值,但是如果我把设为5,这并不意味着查询将返回前5个值,它只是说对5个项目的查询表(以任何顺序,所以它们可能是非常旧的项目或新的项目),所以我有可能在查询中得到0个项目。如何实际获得查询的最新5项?我需要设置一个为5(数字是例子),因为查询/扫描更多的项目会很昂贵。 该查询具有此输入 我的表的索引是

  • 目前我使用table.query通过匹配分区键和排序键来获取项目。现在新的要求是处理批处理查询-几百个分区键匹配,希望仍然按照每个分区键结果中的排序键进行排序。我发现GetBatchItem每个查询最多可以处理100个项目,但看起来没有排序。这里的一项是DDB中的一行还是一个分区键中的所有行?从性能(查询速度)和价格角度来看,我应该使用哪一个?如果我使用GetBatchItem,我必须自己对结果进

  • 我有一个DynamoDB表,其中有一个字母数字字符串作为哈希键(例如“D4ED6962-3EC2-4312-A480-96ECBB48C9DA”)。我需要根据表中的另一个字段查询该表,因此我需要我的查询选择所有键,例如我的字段x在dat x和date y之间。 我知道我需要在哈希键上设置一个条件,在范围键上设置另一个条件,但是我很难编写一个不将查询绑定到特定ID的哈希键条件。 我以为我可以使用一个