2011-12-28 73 views
3

我需要在公元前6000年至今的MySQL中存儲日期。但我不能使用DateTime類型:如何在MySQL數據庫中存儲默認範圍日期?

MySQL reference:「支持的範圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'」

從公元前6000年到現在幾秒鐘​​(60 * 60 * 60 * 24 * 31 * 12)* 8000 = 15427584000000. 現在回想存儲使用BigInteger的日期(如時間戳)和所有的時間將它轉換爲正常日期。

你能指導我嗎?也許,一些解決方案已經存在?

+0

想知道! ** 8000 **年前......? – 2011-12-28 06:31:23

+1

是的。我開發了一個歷史項目和這些日期。 – 2011-12-28 06:35:23

回答

1

您可以將其存儲在兩列中,一個爲年份,正值爲AC,負值爲BC,這樣對於距離有多遠沒有實際限制你可以回去,而且你將數字存儲爲數字,所以這是一個節省空間。搜索和訂購的速度非常快。

第二列可能是這些日期的正常日期,這些日期實際上可能表示日期,使得1000 AC之後的所有日期可以用日期和時間精確定位。這第二列應該允許空值。

2

你可以去格式類似於CHAR(20)數據類型:

  • 第一個字母代表時代的字母順序(A爲基督和B前後)
  • 的19個字符的其餘均爲日期時間在您提到的格式(ymd h:m:s)

這樣,您也將擁有sort並對該列進行索引搜索。

您有一個BIGINT你必須參考datetime所有的日期將相對於。另外,從timestamp轉換爲datetimes將使您的應用程序代碼幾乎膨脹