如何在MySQL数据库中存储默认范围日期?
问题描述:
我需要在公元前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的日期(如时间戳)和所有的时间将它转换为正常日期。
你能指导我吗?也许,一些解决方案已经存在?
答
您可以将其存储在两列中,一个为年份,正值为AC,负值为BC,这样对于距离有多远没有实际限制你可以回去,而且你将数字存储为数字,所以这是一个节省空间。搜索和订购的速度非常快。
第二列可能是这些日期的正常日期,这些日期实际上可能表示日期,使得1000 AC之后的所有日期可以用日期和时间精确定位。这第二列应该允许空值。
答
你可以去格式类似于CHAR(20)
数据类型:
- 第一个字母代表时代的字母顺序(A为基督和B前后)
- 的19个字符的其余均为日期时间在您提到的格式(ymd h:m:s)
这样,您也将拥有sort
并对该列进行索引搜索。
您有一个BIGINT
你必须参考datetime
所有的日期将相对于。另外,从timestamp
转换为datetimes
将使您的应用程序代码几乎膨胀
想知道! ** 8000 **年前......? – 2011-12-28 06:31:23
是的。我开发了一个历史项目和这些日期。 – 2011-12-28 06:35:23