date选择查询在cassandra中没有按预期工作

edqdpe6u  于 2021-06-10  发布在  Cassandra
关注(0)|答案(2)|浏览(311)

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

class Emp{

static mapWith = "cassandra"
String name
Date doj
}

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

Cassandra查询:

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

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

osh3o9ms

osh3o9ms1#

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

mqkwyuun

mqkwyuun2#

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

carlos是正确的,因为cassandra要求日期的格式如下 yyy-mm-dd .
但是这个查询只有在 doj 是您的分区密钥。如果主键未设置为指示 doj 作为分区键,您的查询是不可能的。
我会专门设计您的表来满足您的查询。此定义在 doj 和群集 id 为了唯一性,多个emp[loyee]可能有相同的 doj :

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)

相关问题