FluentCassandra使用CQL选择时间戳范围

时间:2012-07-10 12:29:57

标签: c# select range cql fluentcassandra

我的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),我仍然想知道我的查询有什么问题。

1 个答案:

答案 0 :(得分:1)

将转换中的秒数更改为毫秒,重新创建的数据库以及一切正常。

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

仍然感兴趣如何在API中执行相同的请求(使用SlicePredicateQuery?)。