【问题标题】:DynamoDb query on stored dateDynamoDb 查询存储日期
【发布时间】:2020-09-21 08:05:12
【问题描述】:

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

 "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
  }
}

【问题讨论】:

    标签: graphql amazon-dynamodb aws-appsync dynamodb-queries


    【解决方案1】:

    DynamoDB 不理解日期。根据您的要求,有两种方法可以实现此目的,具体取决于 DynamoDB 中时间戳的格式。

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

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

    然后使用带有BETWEEN :startDate AND :endDate 的过滤器根据输入日期查询您的表。 请注意,

    endDate(秒) = startDate + 86400

    endDate(毫秒) = startDate + 86400000

    2 - 如果您使用时间戳的字符串表示,那么您可能需要添加具有日期字段的全局二级索引 (GSI) 作为键类型“范围”的属性。在this linkthis linkthis link 上有一些很好的解释和建议的解决方案。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2021-09-05
      • 2017-11-18
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      相关资源
      最近更新 更多