【问题标题】:FluentCassandra selecting timestamp range with CQLFluentCassandra 使用 CQL 选择时间戳范围
【发布时间】:2012-07-11 16:17:32
【问题描述】:

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

【问题讨论】:

    标签: c# select range cql fluentcassandra


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      相关资源
      最近更新 更多