我的DAL中有一个方法可以选择带有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方法(http://stackoverflow.com/questions/5325035/fluentcassandra-range-selection-problem),我仍然想知道我的查询有什么问题。
答案 0 :(得分:1)
将转换中的秒数更改为毫秒,重新创建的数据库以及一切正常。
var start = (FilterStartTime - new DateTime(1970, 1, 1).ToLocalTime()).TotalMilliseconds;
var end = (FilterEndTime - new DateTime(1970, 1, 1).ToLocalTime()).TotalMilliseconds;
仍然感兴趣如何在API中执行相同的请求(使用SlicePredicateQuery?)。