Как использовать основные арифметические операции в предложении WHERE CQL?

Я пытаюсь написать запрос 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

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

Недопустимый синтаксис в строке 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столбец хранит секунды. Как это исправить?

Метки

1 ответ

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

    HTH.