Я создал таблицу следующим образом в Кассандре:Cassandra запрос с равным оператором на колонке метки времени не работает
CREATE TABLE sp.status(
ams text,
load_start_time timestamp,
file_path text,
file_timestamp timestamp,
host text,
load_end_time timestamp,
records_ignored int,
records_imported int,
records_in_file int,
status text,
PRIMARY KEY (ams, load_start_time)
) WITH CLUSTERING ORDER BY (load_start_time DESC)
Я хочу, чтобы выбрать строку с определенной датой. Когда я использую оператор>, все работает так, как ожидалось. Но если я использую оператор =, я не получаю никаких данных.
SELECT * FROM sp.status WHERE ams = 'RRG' AND load_start_time='2016-01-20 10:10:27' allow filtering;
Существует в базе данных строка с этим значением для load_start_time и возвращается, если в приведенном выше запросе я заменяю = с> для load_start_time.
Может кто-нибудь объяснить, почему это так?
Мне действительно нужно это для оператора DELETE, и там я не могу использовать операторы диапазона, only =.
Вы правы. Я также думал, что миллисекунды были проблемой при запуске. Я использую Dbeaver для доступа к Cassandra. Я проверил свое поле timestamp, и он не показал никаких признаков того, что он хранит миллисекунды. Но ваш метод показал, что он делает, как вы сказали. Я добавил ms, и это сработало. Спасибо – dragosb
@dragosb Удивительный! Рад, что смог помочь. – Aaron