Метка времени Кассандры: неверное значение времени

Я новичок в Кассандре. У меня есть таблица Кассандры ( V: 3.11) (данные). У него есть столбец timeStampCol типа timestamp, и я вставляю в него значение.

insert into data (timeStampCol) values('2017-05-02 17:33:03');

При доступе к данным из таблицы

select * from data;

Я получил результат, как -

@ Row 1
----------+------------------------------------
 timeStampCol | 2017-05-02 08:33:03.000000+0000

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

2 ответа

Решение

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

Если вы вставляете данные в столбец отметки времени без указания часового пояса, как этот:

insert into data (timeStampCol) values('2017-05-02 17:33:03');

Кассандра выберет координатора часового пояса

Если часовой пояс не указан, используется часовой пояс узла-координатора Cassandra, обрабатывающего запрос на запись. Для точности DataStax рекомендует указывать часовой пояс, а не полагаться на часовой пояс, настроенный на узлах Cassandra.

Вам нужно конвертировать строковую дату в java.util.Date и установить часовой пояс узла-координатора, в моем случае это было GMT+6

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse("2012-01-21");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+6")); //Change this time zone

Источник: https://docs.datastax.com/en/cql/3.0/cql/cql_reference/timestamp_type_r.html

Кассандра будет принимать входящие данные в установленном часовом поясе. Например, если у вас настроена Cassandra в IST, и даже если входящие данные - это UTC, Cassandra преобразует их обратно в UTC, учитывая, что данные находятся в IST.

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

Другие вопросы по тегам