【问题标题】:Cassandra - SyntaxException: line ... no viable alternative at input in select statementCassandra - SyntaxException: line ... 在 select 语句的输入中没有可行的替代方案
【发布时间】:2020-09-29 16:04:29
【问题描述】:

我正在尝试使用以下查询从 cassandra db 中选择数据,但它失败了-

SELECT id from keyspace.table where code=123 and toTimestamp(now()) >= some_date;

Error- SyntaxException: line 1:103 no viable alternative at input '(' (...table where code=123 and [toTimestamp](...)

看起来 toTimestamp(now()) 是导致问题的原因。 有人可以建议这是什么问题和解决方案吗? 谢谢。

【问题讨论】:

  • 能否将您的表架构添加到问题中。
  • 实际上它通过像这样交换日期条件来工作 - SELECT id from keyspace.table where code=123 and some_date

标签: cassandra cql


【解决方案1】:

您不能在 WHERE 语句中使用函数。因此,唯一的解决方法是获取应用程序中的当前时间,并将其传递给查询。此请求被跟踪为CASSANDRA-8488

但实际上,您的查询应该在某些列上具有条件,而不是在计算值上。

【讨论】:

  • 实际上它通过像这样交换日期条件来工作 - SELECT id from keyspace.table where code=123 and some_date
  • @Yogesh 无论如何,在提到 Jira 实施之前它不会起作用
  • @AlexOtt 我认为some_date 是他的专栏名称。
  • 对不起,如果上面的查询在我试图进行一般查询时造成了混乱,请见谅。这是原始查询,它在交换上述条件后起作用 - SELECT originator_id from my_keyspace.vod_originator_sid_map where effective_start_date
  • @Yogesh 是的,您可能需要根据查询模式重建表。在这种情况下,您可能需要一个时间“桶”。看看我对这个问题的回答:stackoverflow.com/questions/57106586/…
猜你喜欢
  • 2020-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
相关资源
最近更新 更多