Я хочу сохранить данные временной метки с смещением UTC от строки в колонку timestamp Cassandra. Моя строка - это что-то вроде yyyy-MM-dd HH:mm:ssZ
, где Z - строка, такая как +0100
. Все, что я хочу, это сохранить его как временную метку в столбце event_time
, включая мое смещение по UTC. Использование DataStax Java Driver:Сохранять временную метку со смещением UTC от строки в Cassandra
PreparedStatement statement = session.prepare(
"INSERT INTO " + table + "(" + frame + ", device_uuid, event_time, value)"
+ "VALUES (?,?,?,?);");
BoundStatement boundStatement = new BoundStatement(statement);
session.execute(boundStatement.bind(frame_val, uuid, date, value));
где date
рассчитывается следующим образом:
String str = "2016-11-22 02:33:25+0100";
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
Date date = null;
try {
date = formatter.parse(str);
} catch (ParseException e) {
System.out.println("Error in parsing date");
e.printStackTrace();
}
return date;
Проблема заключается в том, я всегда получал такие ценности, как 2016-11-25 13:24:07+0000
, так со смещением всегда устанавливается равным нулю; Я проверил здесь для формата данных https://docs.datastax.com/en/cql/3.1/cql/cql_reference/timestamp_type_r.html, и я не могу понять, где я ошибаюсь. Я думаю, проблема заключается в том, что я не хочу, чтобы Cassandra использовала свой часовой пояс, но я хочу «ввести» свое смещение UTC в значение метки времени. Может ли кто-нибудь указать мне, как это сделать?
Ваше event_time правильно хранится в Кассандре. Показывается время в GMT. –
http://stackoverflow.com/questions/32778433/cassandra-cqlsh-not-displaying-correct-timezone –