DynamoDb查询存储的日期

时间:2020-06-02 18:36:22

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

我有解析模板,该模板将从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
  }
}

1 个答案:

答案 0 :(得分:1)

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

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

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

,然后将过滤器与BETWEEN :startDate AND :endDate一起使用,以根据输入日期查询表。 请注意

endDate(seconds)= startDate + 86400

endDate(毫秒)= startDate + 86400000

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

希望对您有帮助。