2013-03-23 24 views
2

我一直在寻找遍布网络的这个答案,但不理解所有写的东西。我尝试从unix_timestamp()执行,但它返回错误的日期。 我所做的是将一个xls文件导入到数据库中。它将日期转换为5位数字。 有没有简单的方法?任何帮助都会很棒。 这是我试过的。我试图将Excel文件中的日期格式更改为YYYY-MM-DD,但这不起作用。只需将mysql数据库中的5位数字转换为日期

+0

你是什么意思“这个没有工作”吗? – Oswald 2013-03-23 17:31:05

+0

我将其更改为该格式,然后再次导入该文件,并且它仍然以5位数字的形式进入数据库 – Ricky 2013-03-23 17:32:03

+0

什么是MySQL字段的数据类型? – Oswald 2013-03-23 17:33:13

回答

3

从Excel价值观去,试试这个:

select date('1899-12-30') + interval <number> days 

例如:

select date('1899-12-30') + interval 40000 days 

返回2009年7月6日,只是因为它在Excel中。

换句话说,您可以将整数值带入,然后在SQL中进行转换。

我其实有点惊讶,因为Excel上的0日期基本上是1900年1月0日,也就是1899年12月31日。我怀疑是1900年闰年缺乏的问题。代表于二零零九年二月二十九日的“60”。这很有趣,我没有意识到Excel有这个bug。

所以,上面的代码工作,对所有大于61

+0

这个答案有用吗? – wizlog 2016-07-28 19:47:52

1

值试试这个

 $date_format = floor($excelDateTime); 
     $time_format = $excelDateTime - $date_format; 
     $mysql_strdate = ($date_format > 0) ? ($date_format - 25569) * 86400 + $time_format * 86400 : $time_format * 86400; 
     $mysql_date_format = date("Y-d-m", $mysql_strdate);