在MySQL数据库中将日期存储为整数

时间:2015-12-06 19:19:31

标签: mysql date

我正在尝试在前员工创建的MySQL数据库上运行一些报告。他将日期存储为整数。我已经倒退了,看起来像以前生成的一些PDF报告。我确信数字ID 78496是2015年11月27日,78514是2015年12月15日

ordered = 78496 = 27/11/2015
required = 78514 = 15/12/2015

这些ID相差18,这也是11月27日到12月15日之间的天数。

我从未遇到过这种存储日期的方式。是否有人熟悉我可以调用的函数将这些ID转换为YYYY-MM-DD?

修改。我已经检查过,78486是1800年12月28日到2015年11月27日之间的天数

2 个答案:

答案 0 :(得分:2)

该数字似乎是从开始日期开始的天数。

这比01/01/1900落后大约100年,因为这是过去的42,335天。

根据正确的基准日期,只需添加天数即可。

为了找到基准日期,只需按照测试日期的相反方式进行。

SELECT DATE_SUB('2015-12-15', INTERVAL 78514 DAY);
BTW给出了" 1800-12-28"和

SELECT DATE_SUB('2015-11-27', INTERVAL 78496 DAY);

完全一样。

一些想法:

1800-12-28看起来很奇怪,我认为这是1900-01-01,并且计算闰年有缺陷,1800年和1900年和2000年不是闰年,因为世纪规则。确切地说是三天的差异......

答案 1 :(得分:1)

我建议创建一个函数,将您给出的数字转换为合理的日期。仅用于轻量级操作。

effective

比仅创建这样的函数更重要的是,如果您能说服(如果需要)决策者用一个包含有效日期值的新字段替换该字段,那将是最好的。在该表中,添加一个包含日期数据类型的新列。然后从整数计算日期。浏览代码并将整数的使用替换为有效的日期字段,然后删除该列(在进行备份后)。

就像Alex描述的闰年告诫一样,你必须对日期进行彻底的研究,并确保你可以复制使用整数数据类型所表现出的行为。