2011-12-28 28 views
3

紀元前6000年からMySQLに日付を格納する必要があります。MySQLデータベースにデフォルトの範囲の日付を保存する方法は?

MySQL reference:しかし、私は、このためのDateTime型を使用することはできません「サポートされる範囲は、 『1000年1月1日〇時00分00秒』 『9999-12-31午後11時59分59秒』にあります」今秒(* 12 60 * 60 * 60 * 24 * 31)* 8000 = 15427584000000. に今、私は保存する(タイムスタンプのような)のBigIntegerを使用して日付とすべての時間を考えるBC 6000から

にこれを変換します通常の日付。

私に何かアドバイスできますか?たぶん、いくつかの解決策はすでに存在していますか?

+0

ワンダリング! ** 8000年後に...? –

+1

はい。私は1つの歴史的プロジェクトとこの種の日付を作成します。 –

答えて

1

これは2つの列に1つずつ格納できます。正の値はAC、負はBCのように格納できますあなたは行くことができますし、数字を数字として保存しているので、スペースを節約できます。そして、それは検索と注文が迅速です。

2番目の列は、実際に日付として表すことができる日付の通常の日付で、1000 AC後のすべての日付を曜日と時間で特定することができます。この2番目の列はNULL値を許可する必要があります。

2

あなたはのようにフォーマットCHAR(20)データ型のために行くことができます:

  • 最初の文字が
  • 19文字の残りの部分は日時である(後のためにキリストとBの前にのためにA)アルファベット順の時代を表し、あなたが言及した形式(ymd h:m:s)

この方法では、sortとその列の索引付き検索も行います。

BIGINTがある場合は、参照番号datetimeをすべての日付に関連付ける必要があります。また、timestampからdatetimesに変換すると、アプリケーションコードがかなり膨らんでしまいます

関連する問題