Недавно я начал работать над cassandra, и у меня есть некоторые проблемы, связанные с timestamp cassandra с использованием cql и Java.Работа с Cassandra Timestamp
Ниже приведена схема таблицы образцов кассандры.
CREATE TABLE emp (
empid int,
create_date timestamp,
deptid int,
PRIMARY KEY (empid, create_date)
)
Вот мои вопросы ниже:
1) На самом деле мне нужна только дата (я не беспокоюсь о время), В моей таблице схеме я использовал временную метку типа данных, Есть ли тип данных, как дата, чтобы сохранить только дату, а не метку времени.
2) Если нет альтернативы временной метки типа данных ниже, как я вставить запись в таблицу вручную
Insert into emp(empId, deptId, create_date) values(1,2,'2016-03-15 00:00:00+0000');
Когда я пытаюсь возвращающий записи с помощью CQL ниже
select * from emp where create_date='2016-03-15' and empid=1;
Это не возвращает запись так что я должен использовать ниже запрос
select * from emp where create_date='2016-03-15 00:00:00+0000' and empid=1;
выше возвращаемая запись запроса, Так как запросить, чтобы мне нужно было получать записи только с датой.
3) Я использую datastax 2.1 JAVA API для связи с cassandra. Ниже приведен мой код, как я извлекаю столбцы timestamp из Java.
row.getDate("create_date")
метод GetDate возвращается java.util.Date (более поздние версии возвращающегося com.datastax.driver.core.LocalDate)
Когда я пытаюсь получить дату из кода его возвращение один день меньше, предположим, что если запись в моей таблице 2016-03-15 00: 00: 00 + 0000, но из моего кода она показывает что-то вроде 2016-03-14 EDT (на один день меньше это из-за проблемы с часовым поясом), If его вопрос в часовом поясе должен установить часовой пояс в моем Java-коде при извлечении
4) Если я хочу запросить и получить запись из кода Java на основе empId и create_date, как сделать точный шаблон, например 2016-03-15 00:00:00+0000
в Java-коде, поскольку он не извлекает, любой лучший способ получить с помощью Java-кода.
Спасибо @stefan podkowinski за ваше время, у меня есть некоторые вопросы 1) Как вы предложили «просто использовать строковое представление даты.» это значит, что нужно использовать строку datatime вместо временной метки в таблице схемы 2) Как вы предположили, запрашивая с помощью «create_date =" 2016-03-15Z»работает отлично, используя cqlsh, но как это сделать с помощью java (некоторые из того, как мне удалось получить правильную дату, используя дату и время joda, и часовой пояс настройки в формате UTC) –