1

私はLongsTimestamps実際には)のセットを持っています。どうやら、範囲に適合しないIntegersため、データを失うことなくキャストすることはできません。これらに基づいてタイプの主キーを生成する必要があります。これを行う方法はありますか?timestampIntegerIntegerLongs

4

3 に答える 3

2

Longsよりもsが多いためInteger、これを行うための安全な方法はありません。これは、Longsのすべてのセットで機能します。
ただし、Longsがそれほど離れていない場合は、最初のタイムスタンプを0として使用し、その差を使用して、Integer後続のタイムスタンプごとに一意のタイムスタンプを取得できる場合があります。

于 2013-01-04T08:31:36.210 に答える
1

方法はたくさんありますが、タイムスタンプに基づく主キーが良い考えだと本当に思いますか? 同じタイムスタンプを持つ複数のエントリを持つことはそれほど難しくないため、本当に良いキーにはなりません。

とにかく、Java を使用しているので、タイムスタンプはミリ秒単位であると思います。秒に切り捨てるのはまったく悪い考えなので (同じ秒で他のエントリと衝突するのは非常に簡単です)、おそらく良い考えはタイムスタンプを「シフト」することです: タイムスタンプから最小の日付を選択し、そのタイムスタンプをゼロにし、その他はそれ:この場合、おそらく整数に収まります。

于 2013-01-04T08:32:41.130 に答える
1

作成される日付タイムスタンプの範囲が制限されているとします。2004 年 12 月 12 日以降の日付としましょう。最上位桁を切り捨てる合理的なアプローチのようです。

long 00001357288262
int      1357288262
于 2013-01-04T08:33:22.813 に答える