2017-09-25 10 views
1

카산드라를 처음 사용했습니다. 카산드라 (V : 3.11) 테이블 (데이터)이 있습니다. 타임 스탬프 형식의 timeStampCol 열이 있는데 값을 삽입하고 있습니다.카산드라 타임 스탬프 : 시간 값이 잘못되었습니다.

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

삽입 값 검색된 값이 시간 동안 다른 테이블 -

select * from data; 

에서 데이터를 액세스하는 동안

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

내가 좋아 초래되었다. 이유는 시간대 일 수 있습니다. 어떻게 수정합니까?

답변

2

선택한 타임 스탬프 값이 정확합니다. 다른 시간대에 표시됩니다. 카산드라의

insert into data (timeStampCol) values('2017-05-02 17:33:03'); 
카산드라는 코디네이터 시간대를 선택합니다

어떤 시간대가 지정되지 않은 경우, 시간대 :

당신은 이와 같은 시간대를 제공하지 않고 타임 스탬프 열에 데이터를 삽입하는 경우 쓰기 요청을 전달하는 코디네이터 노드가 사용됩니다. 정확성을 위해 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

확인 얻었다 그것. Z (데이터 (timeStampCol) 값 ('2017-05-02 17 : 33 : 03Z') 삽입)을 사용하여 변환하지 않아도 정상적으로 작동합니다. – DEV