Cassandra时间戳类型列转换

时间:2012-12-26 19:42:51

标签: c# cassandra thrift

如果有人能解决我的问题,我会非常感动。

我通过C#使用Cassandra Thrift API。我在Cassandra中有一个“timestamp”类型的列,它应该是自Unix纪元以8字节长表示的秒数。

要转换,我这样做:

BitConverter.GetBytes(ToUnixTimestamp(columnValue)));

其中:

protected static long ToUnixTimestamp(DateTime dateTime)
{
    return Convert.ToInt64((dateTime - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds);
}

当我在CLI中检查我的值时,我看到:

=> (column=created, value=225330207-01-15 03:30:53-0500, timestamp=1356568301)

Cassandra没有解释我正确插入的值。年份 225330207 不是我插入的。为什么会发生这种情况?如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

自Unix纪元以来,您需要将“timestamp”类型列中的值存储和检索为毫秒,而不是秒。

http://cassandra.apache.org/doc/cql/CQL.html#usingdates