我需要在公元前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)存储日期,并将所有时间转换为正常日期。
你能给我什么建议?也许,一些解决方案已经存在?
答案 0 :(得分:2)
您可以使用格式为:{/ p>的CHAR(20)
数据类型
这样,您还可以sort
对该列进行索引搜索。
拥有BIGINT
,您必须获取所有日期相对的参考datetime
。此外,从timestamp
转换为datetimes
将使应用程序代码臃肿
答案 1 :(得分:1)
你可以将它存储在两列中,一列为正值,正值为AC,负值为BC,这样就没有真正限制你可以走多远,你将数字存储为数字所以它是一个节省空间。而且搜索和订购速度很快。
第二列可以是那些日期的正常日期,这些日期实际上可以表示为使得1000 AC之后的所有日期可以精确定位日期和时间的日期。第二列应该允许空值。