Часовой пояс в Кассандра DB - PullRequest
0 голосов
/ 13 мая 2019

Я не могу сохранить метку времени в Кассандре в местном часовом поясе.Мой API Springdata получает данные из плоского файла (заполняемого с сервера UNIX).Данные преобразуются в java.util.Date и сохраняются в таблице cassandra для типа данных timestamp.

Но они всегда преобразуются в GMT

String str_data = "13/05/2019 15:38:08";
DateFormat format = new SimpleDateFormat("d/M/yyyy H:m:s", Locale.ENGLISH);
Date timestamp = format.parse(str_data);
format.setTimeZone(TimeZone.getTimeZone("Europe/London"));
System.out.println("Time: "+timestamp);

Вывод на моей консоли Javaисправьте, как показано ниже:

Time: Mon May 13 15:38:08 BST 2019

Но Cassandra DB выглядит так:

ts
--------------------------------
2019-05-13 14:38:08.000000+0000

Что я делаю не так, пожалуйста?

Информация о версии: [cqlsh 5.0.1 |Кассандра 3.11.2 |CQL spec 3.4.4 |Собственный протокол v4]

1 Ответ

0 голосов
/ 13 мая 2019

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

Если вы хотите правильно отформатировать эти данные в cqlsh, вам нужно настроить файл ~/.cassandra/cqlshrc с информацией о часовом поясе - это сделаночерез timezone параметр конфигурации, например:

[ui]
TZ = BST

или настройку переменной окружения TZ при запуске cqlsh.

...