Graphql DynamoDb对存储日期的查询

Graphql DynamoDb对存储日期的查询,graphql,amazon-dynamodb,aws-appsync,dynamodb-queries,Graphql,Amazon Dynamodb,Aws Appsync,Dynamodb Queries,我有一个解析模板,它将从appsync查询中获取开始日期作为日期。但我保存在迪纳摩的约会是有日期时间戳的。我们如何在没有时间的情况下比较这两个日期。以下是我的解析器模板查询: "version": "2018-05-29", "operation": "Query", "query": { "expression": "Id = :Id and startDate =:date", "expressionValues": { #set( $Id = $uti

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

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

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

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

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

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

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

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

我希望这对你有帮助