2012-01-08 4 views
0

b-tree BerkeleyDBデータベースのキーとしてdatetime型を使用しようとしています。私の目標:日付ごとにDateTimeをキーとして

  1. 最小のオーバーヘッド
  2. 日時ストレージのためのキーの比較(範囲を取得する)
  3. 合理的なスピード

最もコンパクトな形で日時を表し、デフォルトはbsddbのキーを使用する方法比較アルゴリズム?

Cでこれを行い、そのようなタスク用に小さなPython拡張を作成するのは難しいですか?私はCで経験はなく、小さなCスニペットしか理解できません(そしてコピー&ペースト)。

+2

Unixエポックを保存することができます。数字だけなので、取得するのと同じくらい簡単です – fge

答えて

2

どのような範囲の日時の値に興味がありますか?その時、どんな解決策ですか?

コメントで示されているように、1902-2037に制限された期間に1秒の解像度を使用する場合は、32ビットの符号付き整数と1970年代のUnix Epochからの秒数を使用できます。 01-01 00:00:00 +00:00(1970年1月1日UTCの深夜)。より広い範囲が必要な場合は、おそらくUnix Epochに比べて64ビットの符号付き整数を使用するべきです。秒未満の精度が必要な場合は、ナノ秒の数である32ビットの符号付き整数を格納します。負の時間(1970年以前)では、小数点以下の秒も負でなければならないことに注意してください。これらの表現を示唆するため

一つの理由は、値を容易に見つけることができることである標準UNIX(POSIX)インタフェース、マイクロ秒の解像度のためのような1秒の分解能のためtime()clock_gettime()ナノ秒の解像度またはgettimeofday()介し。

関連する問題