2012-07-10 147 views
1

我有一個在我的DAL中用CQL查詢選擇對象的方法。我試圖按如下方式傳遞時間間隔:FluentCandandra選擇與CQL的時間戳範圍

//FilterStartTime, FilterEndTime are of type DateTime, stored in config 
// converting DateTime to unix timestamp 
var start = (FilterStartTime - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds; 
var end = (FilterEndTime - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds; 
// UploadedOn is of type timestamp 
var selectQuery2 = "SELECT * FROM MyColumnFamily WHERE DocumentKey=" + key 
          + " AND UploadedOn>=" + start 
          + " AND UploadedOn<=" + end; 
//"SELECT * FROM MyColumnFamily WHERE DocumentKey=000001 AND UploadedOn>=1341093600 AND UploadedOn<=1343599200" 

數據庫包含在指定範圍內的記錄。上面的查詢返回0個元素。 CQL的使用不是一個需求,所以我可能已經使用API​​,但沒有Fetch方法了,我仍然想知道我的查詢有什麼問題。

回答

1

將轉換中的秒數更改爲毫秒,重新創建數據庫以及所有工作。

var start = (FilterStartTime - new DateTime(1970, 1, 1).ToLocalTime()).TotalMilliseconds; 
var end = (FilterEndTime - new DateTime(1970, 1, 1).ToLocalTime()).TotalMilliseconds; 

還有興趣如何在API中使用相同的請求(使用SlicePredicateQuery?)。