1

在 cqlsh 我可以执行类似的东西:

SELECT id FROM names WHERE name = 'dave' AND id > maxTimeuuid('2015-04-05 00:05') AND id < minTimeuuid('2019-01-01 00:05');

...这会按预期返回一个列表。

 id
--------------------------------------
 632f4960-375b-11e8-90b1-02420a000203
 91f03523-3761-11e8-a777-02420a000a05
 32dbffc4-3762-11e8-a778-02420a000a05
 9ffb1ab8-3762-11e8-a779-02420a000a05
 c28a0372-3764-11e8-a77b-02420a000a05

但是我正在努力让它在 gocql 中工作:

var found bool = false
m := map[string]interface{}{}
qString := "SELECT id FROM names WHERE name=? AND id > maxTimeuuid(?) AND id < minTimeuuid(?);"
query := Cassandra.Sessionds.Query(qString, name, toFrom.From, toFrom.To).Consistency(gocql.One)
fmt.Println("sending IsRunning query: " + query.String())
iterable := query.Iter()
for iterable.MapScan(m) {
    found = true
    lookupTable = HostLookup {
        Id:     m["id"].(gocql.UUID),
    }
}

即使调试线看起来没问题,

sending IsRunning query: [query statement="SELECT id FROM names WHERE name=? AND id > maxTimeuuid(?) AND id < minTimeuuid(?);" values=[dave 2015-04-05 00:05 2019-01-01 00:05] consistency=ONE]

...我总是以一个空的迭代结束。我在其他地方成功地使用了非常相似的代码,这里的区别是 timeuuid 函数。我尝试了各种带有文字引号的安排,但无济于事,不胜感激。

4

1 回答 1

0

当我更详细地查看可迭代对象时,我发现:

“无法将字符串编组为时间戳”

...这使我得到了答案-GoCQL:将字符串编组为时间戳

于 2018-04-08T16:44:31.357 回答