如何在MySQL数据库中存储超出默认范围的日期?

时间:2011-12-28 06:29:02

标签: mysql datetime

我需要在公元前6000年至今的MySQL中存储日期。但我不能使用DateTime类型:

  

MySQL reference:“支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'”

从公元前6000年到现在几秒钟​​(60 * 60 * 60 * 24 * 31 * 12)* 8000 = 15427584000000。 现在我考虑使用BigInteger(如TimeStamp)存储日期,并将所有时间转换为正常日期。

你能给我什么建议?也许,一些解决方案已经存在?

2 个答案:

答案 0 :(得分:2)

您可以使用格式为:{/ p>的CHAR(20)数据类型

  • 第一个字母按字母顺序表示时代(A代表基督前,B代表后代)
  • 19个字符的其余部分是您提到的格式的日期时间(ymd h:m:s)

这样,您还可以sort对该列进行索引搜索。

拥有BIGINT,您必须获取所有日期相对的参考datetime。此外,从timestamp转换为datetimes将使应用程序代码臃肿

答案 1 :(得分:1)

你可以将它存储在两列中,一列为正值,正值为AC,负值为BC,这样就没有真正限制你可以走多远,你将数字存储为数字所以它是一个节省空间。而且搜索和订购速度很快。

第二列可以是那些日期的正常日期,这些日期实际上可以表示为使得1000 AC之后的所有日期可以精确定位日期和时间的日期。第二列应该允许空值。