2017-12-16 19 views
1

私はPostgreSQL 10を使用しています。documentationには、dateタイプの最小範囲は4713です。 5000BCのような、より低い分を持つ方法はありますか?それとも私は自分の解決策を考え出すべきですか?PostgreSQL 10のデフォルトの日付範囲はもっと広いですか?

+2

あなたはおそらく、ハンター・ギャザーの顧客の詳細を保存しようとしています。 –

+1

はい、あなた自身の解決策が必要です。intのテキストに日付を保存することは醜いので、すべての数学を自分で実行するのは恐れています。しかし本当に - あなたが保存したい正確な日付は?.. –

+0

@ VaoTsunそれは文化的/歴史的なプロジェクトで、古代の時代と日付を定義する必要があります。私は何年も正確に探します。単に古代の年を保存することは5000BCのようにうまくいくでしょうが、これも 'date'型を必要とします。これが私が4713に止めることができない理由です。5000BCで戦闘が起こったらどうなりますか?歴史家が5000BCを挿入しようとしているときにエラーが発生したとします。 – slevin

答えて

1

日付を2つのフィールドとして保存するなど、カスタムソリューションを構築する必要があります。 dateと、余分なsmallintオフセット。

よりクリーンな方法は、より最近の値にはdate、古い日付にはsmallintを内部的に使用する独自のデータ型を定義することでしょう。この型の独自の演算子を定義し、通常の日付のように使用することができます。

+0

はい、私は同じことを考えていた。すべての日付をデフォルトのACとして保存し、ブール値(0、BC/1、AC)もある場合は、それに応じて日付を保存またはレンダリングできますか? 「問題」は、紀元前から世紀を抽出したい場合は、UIに戻す前に(-1)行う必要があります。それが可能か実行可能だと思いますか? – slevin

+0

可能ですが、企業全体が多くの質問をします。紀元前20000年2月は28日か29日か?このような質問に入ると、紀元前4000年前の日付を保存する考えを放棄します。あなた自身のデータ型を定義する必要があるかもしれません - 私は答えを更新します。 –

+0

はい、そうです。私は、最も簡単な解決策に行くと思います。私は何世紀にもわたって 'int'の範囲と' int'の範囲を含んだ時代のための "eraBC"テーブルを持っています。ユーザーはちょうどBCの年のための 'int'を挿入し、thatsそれ... – slevin

関連する問題