2

誰かが私の問題を解決できれば、とても感銘を受けます。

C# 経由で Cassandra Thrift API を使用しています。私は、Cassandra に「タイムスタンプ」タイプの列を持っています。これは、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という年は、私が挿入したものではありません。なぜこれが起こっているのですか?どうすれば修正できますか?

4

1 に答える 1

3

「タイムスタンプ」タイプの列の値を、秒ではなく、Unix エポックからのミリ秒として保存および取得する必要があります。

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

于 2012-12-26T20:46:15.293 に答える