あいまいな日付にアプローチするには、いくつかの異なる方法があります。 PostgreSQLでは、
を使用できます- 1組の日付列(earliest_possible_date、latest_possible_date)、
- 日付列と精度列(「2012-01-01」、「年」)、または
- a 範囲データ型 (daterange)、または
- varchar( '2013-01-2?'、 '2013-??-05')、または
- これらのデータ型のいずれかを含む別の1つまたは複数のテーブル。
範囲データ型は、最近のバージョンのPostgreSQLに固有のものです。他のSQLデータベース管理システムで他のものを使用できます。
必要なあいまいさの種類は、アプリケーションによって異なります。あいまいな日付をクエリする方法は、選択したデータ型または構造によって異なります。保存する必要のあるあいまいさの種類と、ユーザーが回答する必要のある質問の種類をしっかりと把握する必要があります。そして、データベースが彼らの質問に答えられることを確認するためにテストする必要があります。
たとえば、法制度では、日付の記憶が不十分であるか、汚されている可能性があります。 「2014年1月の木曜日でした。知っています」と言う人がいるかもしれません。 ゴミ拾いの日だったので木曜日だった」「去年の6月か7月の最初の週だった」そんなあいまいさを記録するには別のテーブルが必要です。
または、「2014年14月」しか読めないように消印が押されている可能性があります。 14日に消印が押されたことは知っていますが、どの月かはわかりません。繰り返しますが、別のテーブルが必要です。
これらのいくつか(すべて?)は、いくつかのフープを飛び越えない限り、3値論理を提供しません。 (「Possible」は有効なブール値ではありません。)