2011-12-28 70 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将使您的应用程序代码几乎膨胀

相关问题