2016-07-07 4 views
1

나는이 테이블이 :카산드라 - 타임 스탬프를 어떻게 비교할 수 있습니까?

CREATE TABLE mytablename (
    name text, 
    typeid int, 
    activefrom timestamp, 
    status text, 
    PRIMARY KEY ((name), typeid, activefrom) 
) 

나는 일부 쿼리 여기 예를 들어, 타임 스탬프 activefrom의 범위를 조회하고 싶습니다 :

  • activefrom> '2000년 1월 2일'
  • activefrom을 > '2000-01-02'AND activefrom < '2010-01-02'

SQL에서와 같이 작동하지 않는 것으로 나타났습니다. 예를 들어

name | typeid | activefrom    | status 
------+--------+--------------------------+-------------- 
    dani | 99999 | 1970-01-26 00:00:00+0000 | OK 
    dani | 99999 | 1970-01-26 01:00:00+0000 | OK 
    dani | 99999 | 2070-01-26 00:00:00+0000 | OK 
    dani | 99999 | 1970-01-01 00:00:00+0000 | OK 

검색어 :

dani | 99999 | 2070-01-26 00:00:00+0000 | OK 
    dani | 99999 | 1970-01-01 00:00:00+0000 | OK 

카산드라 버전 :

cqlsh 4.1.1 | Cassandra 2.1.13.1218 | CQL spec 3.1.1 | Thrift protocol 19.39.0 
나는 결과로이이

select * from mytablename where name='dani' and typeid=99999 and activefrom > '2070-01-02 12:51:58+0000'; 

제안 사항이 있으십니까? 고마워요

+0

정확한 검색어를 표시 할 수 있습니까? –

+0

물론, 방금 추가했습니다. – Danilo

+0

이것은 정말 이상하게 들립니다. 카산드라 버전은 어떤 제품입니까? – Aaron

답변

0

나는 이것을 시도하고 이것이 내가 가진 것입니다.

cqlsh:test> CREATE TABLE mytablename (
 
    ... name text, 
 
    ... typeid int, 
 
    ... activefrom timestamp, 
 
    ... status text, 
 
    ... PRIMARY KEY ((name), typeid, activefrom) 
 
    ...) 
 
    ... ; 
 

 
cqlsh:test> insert into mytablename (name,typeid,activefrom,status) values ('dani',99999,'1970-01-26 00:00:00+0000','OK'); 
 
cqlsh:test> insert into mytablename (name,typeid,activefrom,status) values ('dani',99999,'1970-01-26 01:00:00+0000','OK'); 
 
cqlsh:test> insert into mytablename (name,typeid,activefrom,status) values ('dani',99999,'2070-01-26 00:00:00+0000','OK'); 
 
cqlsh:test> insert into mytablename (name,typeid,activefrom,status) values ('dani',99999,'1970-01-01 00:00:00+0000','OK'); 
 
cqlsh:test> select * from mytablename; 
 

 
name | typeid | activefrom      | status 
 
------+--------+---------------------------------+-------- 
 
dani | 99999 | 1970-01-01 00:00:00.000000+0000 |  OK 
 
dani | 99999 | 1970-01-26 00:00:00.000000+0000 |  OK 
 
dani | 99999 | 1970-01-26 01:00:00.000000+0000 |  OK 
 
dani | 99999 | 2070-01-26 00:00:00.000000+0000 |  OK 
 

 
(4 rows) 
 
cqlsh:test> select * from mytablename where name='dani' and typeid=99999 and activefrom > '2070-01-02 12:51:58+0000'; 
 

 
name | typeid | activefrom      | status 
 
------+--------+---------------------------------+-------- 
 
dani | 99999 | 2070-01-26 00:00:00.000000+0000 |  OK 
 

 
(1 rows) 
 
cqlsh:test>

버전 정보 : [cqlsh 5.0.1 | 카산드라 3.4-SNAPSHOT | CQL 스펙 3.4.0 | 네이티브 프로토콜 v4]

+0

그래서 내 문제는 내가 올바른 순서로 삽입하지 않는 새 줄을 삽입 할 때이다. – Danilo

+0

삽입 순서가 문제가되어서는 안된다. 나는 카산드라 버전을 의심한다. 다른 버전으로 사용해 볼 수 있습니까? –

+0

그래, 내가 다른 버전을 시도하고 잘 작동합니다. 그래서 그것은 카산드라의 버전입니다. 불행히도 나는 그것을 바꿀 수 없거나 늘릴 수 없어 자바로 해결했다. 나는 모든 데이터를 검색하고 나는 그들을 파싱 한 후에 비교했다. 최고의 솔루션은 아니지만 작동합니다. 또한 데이터가 너무 많지 않으므로 각 쿼리에 최대 10 ~ 20 개 – Danilo

관련 문제