2015-11-14 30 views
1

我正在面臨與我的cassandra查詢有關在特定日期時間範圍內獲取數據的問題。 我查詢去如下Cassandra日期範圍選擇以提供數據

select * from table1 where column1='abc' and time>='2015-11-13 10:43:55' and time<='2015-11-13 11:48:14' 

如果我執行此查詢時,它釋放出的數據。

但是如果我執行下面的查詢(時間大於),我得到的數據

select * from table1 where column1='abc' and time>='2015-11-13 10:43:55' 

但是,如果執行下面的查詢(時間小於),我不會得到的數據。

select * from table1 where colimn1='abc' and time<='2015-11-13 11:48:14' 

我懷疑毛刺是在不到時間。

對此有何想法?

回答

0

很難沒有看到你的表中的數據說,但我確實有基於經驗的一種思想......

你是怎麼開始保存您的time時間戳值?您是否插入了毫秒級的時間戳?或者你使用dateof(now())

我很好奇,想看看輸出:

SELECT column1, time, blobAsBigint(timestampAsBlob(time)) FROM table1 
WHERE column1='abc' AND time>'2015-11-13 10:43:55'; 

blobAsBigint(timestampAsBlob(time))列是你最後三位數字爲零?如果他們不是,那麼你的time值有毫秒。查詢2015-11-13 11:48:14時間time<='2015-11-13 11:48:14'將不會產生任何結果,除非該值爲恰好爲 2015-11-13 11:48:14.000。

關於使用卡桑德拉時間戳作爲集羣鍵的棘手部分是(默認情況下)它允許您使用更多精度比它實際在cqlsh中顯示的更精確。

+0

時間的值來自服務,它使用java.util.Date來存儲數據。 timestamp中的時間列的日期類型... –