如果有人能解决我的问题,我会非常感动。
我通过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 不是我插入的。为什么会发生这种情况?如何解决这个问题?
答案 0 :(得分:3)
自Unix纪元以来,您需要将“timestamp”类型列中的值存储和检索为毫秒,而不是秒。