日期选择查询在Cassandra中无法正常工作

时间:2019-04-26 17:46:47

标签: groovy cassandra

我有一个域类,下面是声明:

class Emp{

static mapWith = "cassandra"
String name
Date doj
}

data:
id                 name              doj
1                  X                 01-01-2010
2                  Y                 01-20-2012

卡桑德拉查询:

  select * from emp_schema.emp where doj='01-01-2010';

错误: code = 2200 [Invalid query] message =“无法将'01 -01-2010'强制转换为格式化日期(长)”

2 个答案:

答案 0 :(得分:2)

cassandra中查询日期的格式为yyyy-mm-dd

答案 1 :(得分:0)

class SomeGroovyClass {
    def method(){
        new SomeJavaClass().method("USD")
    }
}

卡洛斯(Carlos)是正确的,因为卡桑德拉(Cassandra)要求将日期格式设置为select * from emp_schema.emp where doj='01-01-2010';

但是此查询仅在yyy-mm-dd是您的分区键时有效。 如果未设置您的PRIMARY KEY来指示doj作为分区键,则无法查询。

我将专门设计适合您查询的表。该定义在doj上进行分区,并在doj上进行群集以确保唯一性,因为多个emp [loyee]可能具有相同的id

doj

然后,您可以按特定日期查询,并为其返回多个行:

create table emp_by_doj (
    doj date,
    id int,
    name text,
    primary key (doj,id));