当前位置: 首页 > 知识库问答 >
问题:

按名为“timestamp”(保留字)的列查询Amazon DynamoDB

安博文
2023-03-14

我有一个名为“timestamp”列的DynamoDB表,正在尝试按日期查询。我无法控制更改列名。

var params = {
    TableName : 'REPORT_CARD',

    KeyConditionExpression: "timestamp BETWEEN :startDate AND :endDate",
    ExpressionAttributeValues: {
        ":startDate": ""+startDate,
        ":endDate": ""+endDate
    }     
}

我得到的错误:

错误:ValidationException:无效的KeyConditionExpression:属性名称是保留关键字;保留关键字:时间戳

除了重命名“timestamp”列之外,还有其他解决方法吗?

共有1个答案

蔚宏大
2023-03-14

首先,假设表“REPORT_CARD”是用分区键定义为timestamp,则只能在KeyConditionExpression中使用相等运算符(即“=”)按分区键查询数据。

如果时间戳在表中定义为排序键,则可以使用BETWEEN

关于关键字错误,可以使用ExpressionAtiniteNames来提供属性名时间戳。以下例子:-

js prettyprint-override">var params = {
    TableName: 'REPORT_CARD',

    KeyConditionExpression: "parition_key_attr = :partition_val AND #timestamp BETWEEN :startDate AND :endDate",
    ExpressionAttributeNames: { "#timestamp": "timestamp" },
    ExpressionAttributeValues: {
        ':partition_val': "somevalue",
        ":startDate": startDate,
        ":endDate": endDate
    }
 类似资料:
  • 每个人。在mongo组查询中,结果仅显示参数中的键。如何像mysql查询组一样保留每个组中的第一个文档。例如: 结果: 如何获取以下内容:

  • 问题内容: 这是一些简单的代码,但我只是不知道为什么我不能使用这个词作为表的实体 我意识到如果我使用key,我将无法使用“ key”,mysql将要求我检查语法,但是如果我使用“ id”或任何其他表,将会创建该表。 有人知道如何将实体名称创建为密钥吗?这并不重要,因为我只能使用id而不是key,但是由于我发现了此错误,所以我不知道是否有办法使它起作用。 问题答案: 您仍然可以使用。只要用反引号包起

  • 问题内容: 我创建了一个存储过程,我想在其中添加替代的order by子句。问题是查询在“无效的列名’aantal regels’”上失败 这是我现在的查询。 希望有人可以帮助我! 问题答案: 您不能以这种方式按别名排序。 第一种选择是重复代码。注意:仅仅因为重复代码,SQL引擎就不会天真地再次执行它,而是重用了结果。 或全部使用子查询…

  • 问题内容: 这个问题已经在这里有了答案 : 由于在MySQL中使用保留字作为表或列名而导致的语法错误 (1个答案) 25天前关闭。 我在更新包含HTML数据的MySQL数据时遇到了问题,我不断地修复错误;但是,一旦解决了一个错误,就会产生另一个错误。当前错误如下: 我已经进行了将近3天的Stack Overflow清理工作,但没有任何明确的答案。所以我希望有人能找到这个! 这是我的PHP表单代码:

  • 问题内容: 有什么技巧可以将Java保留字用作变量,方法,类,接口,包或枚举常量名称? 问题答案: 不,没有办法。这就是为什么它们被标记为“保留”的原因。

  • 为了便于编程,CodeIgniter 使用了一些函数、方法、类 和 变量名来实现。 因此,这些名称不能被开发者所使用,下面是不能使用的保留名称列表。 控制器名称 因为你的控制器类将继承主程序控制器,所以你的方法命名一定不能和 主程序控制器类中的方法名相同,否则你的方法将会覆盖他们。 下面列出了已经保留的名称,请不要将你的控制器命名为这些: CI_Controller Default index 函