MySQL代码来转换Exceldate时间

Excel的date时间值看起来像42291.60493,这意味着MySQL将它们视为string而不是date。 有没有可以将它们转换成MySQLdate时间的MySQL代码? (即像在MS SQL中 )

我可以想到2个解决scheme:

  1. 将excel中的date转换为符合mysqldate和时间格式的格式化datestring,在excel中使用text()函数。

  2. 在mysql中使用计算将数字转换为date:

(下面的expression可以被简化)

select date_add(date_add(date('1899-12-31'), interval floor(@datefromexcel) day), interval floor(86400*(@datefromexcel-floor(@datefromexcel))) second) 

Excel将date时间存储为自1899-12-31以来的天数。 Unix存储自1970-01-01以来的秒数,但只允许非负值。

所以, 约会 ,你可以做

 select date_add(date('1899-12-31'), interval $Exceldate day ) 

这不适用于分数天。 但是,对于unixdate时间,这将是很好的:

 select $ExcelDate*24*60*60 + unix_timstamp('1899-12-31') 

但负面的价值是有问题的。 所以,这需要这样的东西:

 select ($ExcelDate - datediff('1899-12-31', '1970-01-01')) * 24*60*60 

也就是说,只需计算自Unix截止date以来的秒数。 注意:这个假定date是在1970-01-01之后,因为MySQL在截断之前不理解unixdate。