Groovy 日期选择查询在Cassandra中未按预期工作

Groovy 日期选择查询在Cassandra中未按预期工作,groovy,cassandra,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

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

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'强制为格式化日期(长)”

在cassandra中查询日期的格式为

Carlos是正确的,因为Cassandra要求日期的格式为
yyy-mm-dd

但只有当
doj
是您的分区键时,此查询才会工作。
如果您的主键未设置为将
doj
指示为分区键,则无法进行查询

我会专门设计您的表以满足您的查询。由于多个emp[loyee]可能具有相同的
doj
,因此该定义在
doj
上进行分区,并在
id
上进行集群以实现唯一性:

create table emp_by_doj (
    doj date,
    id int,
    name text,
    primary key (doj,id));
然后可以按特定日期进行查询,并为其返回多行:

> SELECT * FROM emp_by_doj WHERE doj='2017-06-01';

 doj        | id   | name
------------+------+-------
 2017-06-01 | 7721 | Sarah
 2017-06-01 | 8122 |   Sam

(2 rows)

您可以分享您试图查询的表的定义吗?我使用的是Cassandra 2.2.3,因此doj字段的数据库表结构中是timestamp。我只想保存日期而不保存时间。有哪些选项可以只保存日期而不修改cqlshrc文件?
> SELECT * FROM emp_by_doj WHERE doj='2017-06-01';

 doj        | id   | name
------------+------+-------
 2017-06-01 | 7721 | Sarah
 2017-06-01 | 8122 |   Sam

(2 rows)