2

私は、データを SQLite3 形式で保存する系図ソフトウェアに取り組んでいます。1 つの細かい点を除いて、すべて正常に動作します。すべての場合において、生年月日または死亡日 (など) の正確性が正確な日に利用できるわけではありません。したがって、次の精度があります。

  • 正確な (YYYY-MM-DD)
  • 月 (YYYY-MM)
  • 年(YYYY)
  • 年 (YYYY+/-5)
  • 年 (YYYY+/-10)
  • 年 (YYYY+/-50)
  • 十年
  • 世紀

ここで、すべてを 1 つの列に格納すると仮定すると、問題が発生します。SQLite3 にはユリウス日関数があるので、ユリウス日の小数部で精度をエンコードすることを考えていましたREAL(とにかく時間は必要ありません)。それは問題ありませんが、SELECT動作が複雑になります。実際、そうでなければ SQLite3 にオフロードできるものをアプリケーション コードに実装する必要があります。

不正確な日付を保存し、それらをすばやくクエリできる合理的な方法は何でしょう?

注:回答者にとって重要な場合、使用される言語はPythonですが、一般的に質問しています。

4

3 に答える 3

0

日付情報を保存しているからといって、組み込みの日付型が適切であるとは限りません。データ要件 (日付の不正確さ) は、カスタムの日付処理作業を行い、組み込みの日付データ型を使用しない方が、おそらくより正確で長期的に優れていることを意味します。

于 2013-04-15T23:56:28.720 に答える
0

2 つの列を使用します。1 つの列は、SQLite 形式で、可能な限り正確なおおよその日付です。2 番目の列は、日付の精度 (日数) です。日付が完全に正確な場合、2 番目の列はゼロです。月のみがわかっている場合、日付は月の半ばになり、2 番目の列は 15 日になります。日付の比較は、日付 +/- 精度列と比較することで実行できます。

于 2013-04-16T03:00:24.973 に答える