You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DynamoDB的Datetime类型列上使用--filter-expression过滤数据

DynamoDB Scan时间范围过滤报错解决方案

报错原因

An error occurred (ValidationException) when calling the Scan operation: Invalid FilterExpression: Syntax error; token: "2021", near: "BETWEEN 2021-"
出现该错误的核心原因是:你在--filter-expression中直接写入的ISO格式时间字符串没有被标识为字符串类型,DynamoDB解析表达式时将2021识别为非法数值/标识符,触发语法校验失败。

正确查询写法

方案1:快速修复(直接包裹引号)

直接在过滤表达式中将两个时间值用单引号包裹,标记为字符串即可:

aws dynamodb scan \
  --table-name <替换为你的表名> \
  --filter-expression "Datecolumn BETWEEN '2021-06-01T12:00:00.000Z' AND '2021-06-30T12:00:00.000Z'"

方案2:规范写法(使用表达式属性值,推荐)

为了避免时间值含特殊字符、引号转义冲突等问题,更推荐用占位符+属性值定义的方式编写:

aws dynamodb scan \
  --table-name <替换为你的表名> \
  --filter-expression "Datecolumn BETWEEN :start_dt AND :end_dt" \
  --expression-attribute-values '{
    ":start_dt": {"S": "2021-06-01T12:00:00.000Z"},
    ":end_dt": {"S": "2021-06-30T12:00:00.000Z"}
  }'

说明:{"S": "..."}表示该值为字符串类型,和你DynamoDB中存储的ISO时间格式的列类型完全匹配,兼容性更高。

内容的提问来源于stack exchange,提问作者Praveen Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:27:03