web-dev-qa-db-ja.com

あいまいな日付のデータ型?

日付に関する部分的な情報を保存したい。年と月は知っているかもしれませんが、日はわかりません。私は日と月を知っているかもしれませんが、年は知りません。日付がオープンまたはクローズの間隔にあることを知っているかもしれません。このタイプのデータをモデル化するための私のオプションは何ですか?

4
jl6

私は過去に弁護士のためにこれをしました。 char(10)として保存されているISOスタイルの日付形式(yyyy-mm-dd)を使用しました。欠落している部分には疑問符が使用されています。

2002-01-?? -- some day in January 2002
199?-??-?? -- some day in the 1990s
????-01-08 -- January 8th in an unknown year

このような値は、データ入力を行う人々にとって直感的であり、かなり賢明にソートされ、フォーマットはCHECK制約で制御できます。日付と時刻の計算が失われますが、日付が不明な場合は、通常はそれほど重要ではありません。

日付がオープンまたはクローズの間隔にあることを知っているかもしれません。

これは実際には、たとえば4月1日に何かが起こったことを知っているが、どの年かはわからないということとは異なる種類の情報です。私の頭のてっぺんから、あなたは4つの列を格納できます

  • 開始日
  • 終了日
  • 開始日が間隔内にあるかどうか
  • 終了日が間隔内にあるかどうか

そのような情報は、最初に述べた種類のデータとは別に保存する必要があると思います。 「未知の年の1月8日」は、オープンまたはクローズのいずれかの間隔で表すのが特に面倒です。

PostgreSQL(9.2)の最新リリースには、 範囲タイプ のサポートが含まれています。