ユーザーがすべての情報を知らない可能性がある日付のSQL日付パターン

StackOverflow https://stackoverflow.com/questions/614093

質問

システムでは、新しいユーザーが結婚式の日付を登録および入力できます。純粋主義者として、私はこれを日付として保存したかった。ユーザーインタビューの後、現実がこのアプローチと異なることは明らかでした。ユーザーは多くの場合、日または月がわからず、日付の一部を保存したいため、「2009年6月」はまたは「2012年のいつか」」。

日付の一部が入力されていても、一部の日付を保存し、重要な日のタイムラインを作成しようとする優れたデザインパターンを知っている人はいますか?

役に立ちましたか?

解決

「ファジィ」である可能性があります日付。 「2009年6月」と言う場合、2009年6月15日に+/- 15日の差異で保存できます。

"いつか2010年に" 2010年7月1日で、差額は180日です。

日付と#日を保存します。

それが実際にどのように機能するかはわかりません。ただのアイデア。日付範囲を実装する方が簡単な場合があります。

他のヒント

後日列と前日列を持つ範囲として保存できます。

日付はいつでも別々の列に保存できます:

  • 月の日

それらをすべてNULL可能にします。計算されたフルタイムを保存する列を追加できます。その計算時間では、nullであるすべての列にデフォルト値を使用します。

日付を YYYYMMDD として保存し、不明な月/日を0に設定できます。たとえば、 20090200 は「2009年2月のある日」になります。これにより、比較的簡単に並べ替えて比較することができ、日付に変換する必要がある場合は、月または日に1を追加するだけで、より高度な日付比較の近似値を取得できます。

日付に関して同様の問題がありました。年を指定せずに「6月15日」と言いたい人もいるという追加の問題があります。これもあなたが処理しなければならないケースですか?

日、月、年をデータベース内の3つの別々の列に格納し、それぞれをNULL可能にした後、アプリケーションで(やや)車輪を再発明しました(同様に、" 1974年15日」)。

ただし、アプリケーションにすべての日付処理ロジックを配置したため、3つの列に個別にアクセスすることはありませんでした。後知恵で、それらを単一の列に入れて、部分的な日付を文字列として(「19740615」、「1974 ----」、「---- 0615」などのように)保持したかったのですが、列の乱雑さを減らすためです。

データベースでどれだけやりたいか、アプリケーションでどれだけやりたいかによります。いずれにせよ、少し違った形のホイールを発明すると思います。しかし、もちろん、きちんとカプセル化された再利用可能なクラスを作成するのに十分です-それは楽しくなります! :-)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top