2016-12-27 3 views
0

Я пытаюсь написать CQL запрос, который выглядит следующим образом:Как использовать основные арифметические операции в предложении WHERE CQL?

select * from mytable 
WHERE timestamp >= unixTimestampOf(maxTimeuuid('2016-03-01 00:00:00')) /1000 
and timestamp <= unixTimestampOf(minTimeuuid('2016-03-31 23:59:59'))/1000 

и я получаю эту ошибку:

Invalid syntax at line 1, char XXX

Если изменить запрос

select * from mytable 
WHERE timestamp >= unixTimestampOf(maxTimeuuid('2016-03-01 00:00:00')) 
and timestamp <= unixTimestampOf(minTimeuuid('2016-03-31 23:59:59')) 

это не дайте любую ошибку, но, очевидно, я не получаю желаемого результата, так как unixTimestampOf возвращает миллисекунды, тогда как мой столбец timestamp хранит секунды. Как я могу это исправить?

+0

Почему вы не храните миллисекунды в столбце timestamp? Обратите внимание, что если ваш тип столбца «timestamp» является «timestamp», то у вас уже есть миллисекунды. – xmas79

ответ

0

Этот JIRA-билет - это то, что вы, вероятно, ищете: Operator functionality in CQL. Это все еще не разрешено, но оно продолжается. Одна из его подзадач Add support for arithmetic operators была отмечена как разрешенная недавно и объединяется в Cassandra 3.12, но работает только для числовых типов данных. Я не думаю, что это будет работать из коробки с вашей схемой, вам, вероятно, потребуется изменить временные метки на числовые типы данных.

HTH.