我有解析模板,该模板将从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
}
}
答案 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 link,this link和this link上有一些很好的解释和建议的解决方案。
希望对您有帮助。