2012-07-10 59 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?)。