Сравнение по датам

У меня есть одна таблица в Кассандре: -

CREATE TABLE printerload (
    gp_date timestamp,
    printed_cost float,
    printed_pages int,
    saved_cost float,
    saved_pages int,
    PRIMARY KEY (gp_date)
)

Я вставил данные в таблицу: -

cqlsh> select * from ga.printerload;

gp_date                  | printed_cost | printed_pages | saved_cost | saved_pages
--------------------------+--------------+---------------+------------+-------------
2012-01-02 10:30:00-0800 |          0.2 |             2 |          0 |           0
2013-07-10 11:30:00-0700 |        22633 |        322304 |      54.72 |         142
2012-12-15 10:30:00-0800 |       952.17 |         13524 |       0.18 |           3
2013-01-25 10:30:00-0800 |       1982.2 |         26006 |       0.66 |           0
2013-02-26 10:30:00-0800 |        23189 |        335584 |      61.44 |          84
2012-07-16 11:30:00-0700 |        25312 |        338318 |      13.16 |          25
2012-09-26 11:30:00-0700 |        19584 |        287148 |      98.64 |         319
2012-02-09 10:30:00-0800 |         5.01 |            33 |       0.12 |           0
2012-08-19 11:30:00-0700 |        21833 |        323918 |      28.42 |         395
2013-05-09 11:30:00-0700 |        16493 |        235701 |      30.27 |         232
2013-06-14 11:30:00-0700 |       681.41 |          9087 |          0 |           0
2012-08-04 11:30:00-0700 |       610.91 |          8533 |          0 |           0
2012-06-04 11:30:00-0700 |        22793 |        317440 |       4.09 |           4
2013-07-30 11:30:00-0700 |        22037 |        322377 |      34.83 |          79
2012-08-20 11:30:00-0700 |        22760 |        334601 |       8.48 |          17

Я хочу искать по дате (я вставляю данные с помощью Java-клиента, где gp_date — это только дата, например, 2013-07-30). Я сделал запрос: -

cqlsh> select * from ga.printerload WHERE gp_date = '2013-07-30';

(0 rows)

Мне также нужно включить временную часть для поиска.

cqlsh> select * from ga.printerload WHERE gp_date = '2013-07-30 11:30:00-0700';

gp_date                  | printed_cost | printed_pages | saved_cost | saved_pages
--------------------------+--------------+---------------+------------+-------------
2013-07-30 11:30:00-0700 |        22037 |        322377 |      34.83 |          79

Но сравнение должно быть только по дате (хочу получить записи за конкретный день, независимо от времени). Как я могу это сделать? Есть ли какой-либо метод, который может сравнивать только часть даты? Я использую Apache Cassandra 2.0.7.


person Nayan    schedule 08.05.2014    source источник


Ответы (1)


Вы должны изменить временную метку своего типа данных id на дату, после чего вам нужно изменить свой первичный ключ, потому что в указанную дату должно быть много загрузки принтера, поэтому сделайте его обычным столбцом и используйте вторичные индексы для запроса в этом столбце.

Я думаю, это должно сработать для вас.

person kkmishra    schedule 04.06.2014
comment
Но в Cassandra нет типа данных Date. Не так ли? - person Nayan; 06.06.2014