Excel的日期时间值看起来类似于42291.60493,这意味着MySQL将它们看作字符串而不是日期。是否有MySQL代码可以将它们转换为MySQL日期时间?(即like in MS SQL)
发布于 2015-10-14 12:40:10
我能想到两种解决方案:
(以下词语可简化)
select date_add(date_add(date('1899-12-31'), interval floor(@datefromexcel) day), interval floor(86400*(@datefromexcel-floor(@datefromexcel))) second)发布于 2015-10-14 12:20:07
Excel将日期时间存储为1899-12-31日的天数.Unix存储自1970-01-01年以来的秒数,但只允许非负值.
所以,在约会中,你可以
select date_add(date('1899-12-31'), interval $Exceldate day )这不适用于小数天。但是,对于unix约会时间,这将是一个很好的选择:
select $ExcelDate*24*60*60 + unix_timstamp('1899-12-31')但是负值是有问题的。所以,这需要这样的东西:
select ($ExcelDate - datediff('1899-12-31', '1970-01-01')) * 24*60*60也就是说,只需计算自Unix截止日期以来的秒数。注意:这假设日期是在1970-01-01之后,因为MySQL不理解unix截止日期之前的日期。
发布于 2021-05-24 21:50:54
Excel日期值表示1899-12-30天的天数.产生奇数的原因是Excel引入时需要与Lotus1-2-3兼容。Lotus1-2-3日差计算错误地假设1900年是闰年,增加了额外的一天.为了兼容性,微软复制了这个bug。(https://learn.microsoft.com/en-us/office/troubleshoot/excel/wrongly-assumes-1900-is-leap-year)
使用正确的值,计算将如上面所述的@Shadow所示。
https://stackoverflow.com/questions/33125037
复制相似问题