2017-08-28 30 views
1

我通过使用在Excel中的CSV值这样从Excel转换十进制序列号到mysql正确

42973.74257

我想将其转换为MySQL的日期时间列:

DATE_ADD( '1900-01-01',INTERVAL(42973.74257 * 60 * 60 * 24)秒)作为日期

然而,它会给我一个不正确的结果

2017年8月28日17:49:18.048000

而正确的结果应该是

2017年8月26日5:49:18 PM

它增加了2天的结果。因为我有大约1M行,所以我不知道是否所有结果都不正确。

你们有没有更好的办法将序列号从excel转换到mysql?

感谢,

^h

+0

默认情况下,MySQL日期使用YYYY-MM-DD格式。您可以使用[DATE_FORMAT()](https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format)函数进行不同的格式化。 –

+0

你为什么认为这个价值是两天呢?当我尝试MySQL查询'select to_days('2017-08-28') - to_days('1900-01-01');'我得到42973. –

+0

它增加了2天的结果。 8/26和8/28。所以我不确定查询是否会为整个数据库产生不正确的结果 –

回答

3

你的答案是错了两天。

其中之一是因为它实际上对待1900年1月1日,而不是0(ref)。

根据this blog post,它已关闭了另一天,因为Excel错误地将1900年视为闰年出于传统兼容性原因。

如果在将值传递给公式之前从值中减去2,它应该可以工作。