DynamoDb 查询存储日期
Posted
技术标签:
【中文标题】DynamoDb 查询存储日期【英文标题】:DynamoDb query on stored date 【发布时间】: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
【问题讨论】:
【参考方案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 link、this link 和this link 上有一些很好的解释和建议的解决方案。
希望对你有帮助。
【讨论】:
以上是关于DynamoDb 查询存储日期的主要内容,如果未能解决你的问题,请参考以下文章
带标签的 AWS S3、DynamoDB、Redshift?