2017-09-25 9 views
1

カサンドラで新しく追加されました。私はカッサンドラ(V:3.11)のテーブル(データ)を持っています。タイムスタンプ型のtimeStampColという列があり、その中に値を挿入しています。カサンドラタイムスタンプ:間違った時間値

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'); 
カサンドラは、コーディネーターのタイムゾーンを選択します

タイムゾーンが指定されていない場合、タイムゾーン:

あなたは、この1のようなタイムゾーンを設けることなく、タイムスタンプ列にデータを挿入した場合書き込み要求を渡すコーディネーター・ノードが使用されます。正確さのために、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

+0

[OK]を得ましたそれ。 Z(データ(timeStampCol)の値( '2017-05-02 17:33:03Z')に挿入)を使用して変換を行わずに正常に動作している場合 – DEV

関連する問題