Запрос выбора даты не работает должным образом в Кассандре - PullRequest
1 голос
/ 26 апреля 2019

У меня есть класс домена, ниже приведено объявление:

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 ]

2 голосов
/ 27 апреля 2019

формат запроса даты в Кассандре: yyyy-mm-dd

0 голосов
/ 30 апреля 2019
select * from emp_schema.emp where doj='01-01-2010';

Карлос прав в том, что Кассандра требует, чтобы даты были отформатированы как yyy-mm-dd.

Но этот запрос будет работать, только если doj является вашим ключом раздела. Если ваш PRIMARY KEY не настроен для указания 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...