Excel导入到MySQL:日期插入为0000-00-00

时间:2013-09-24 17:36:57

标签: mysql date phpexcel

我使用PHPExcel库导入Excel文件(.xlsx)并插入MySQL。我在日期字段面临两个问题:

1-在Excel工作表中,我尝试将日期格式更改为所需的格式。保存后,单元格会显示我需要的格式(yyyy/mm/dd)但是当我双击编辑它们时,它们会再次变回(mm/dd/yyyy)之前的格式。

2-当文件通过PHPExcel导入MySQL时,除了插入0000-00-00的日期列之外,所有列都被正确插入。 Excel表格中的格式与MySQL中的格式相同,但输入的全部为零。

请帮忙!

2 个答案:

答案 0 :(得分:5)

PHPExcel中的值存储是Excel序列化日期时间值(浮点数,表示自19/1年1月1日或1/1/9004以来的天数,具体取决于是使用Windows还是Mac日历)。更改格式只是更改此值的显示方式。

您需要事先知道某个单元格是否包含日期,或者使用PHPExcel_Shared_Date::isDateTime()方法对其进行测试,并进行适当的转换。然后,您可以使用getFormattedValue()检索它,将值作为格式化字符串返回;或使用内置转换函数将其转换为unix时间戳(PHPExcel_Shared_Date::ExcelToPHP())或PHP DateTime对象(PHPExcel_Shared_Date::ExcelToPHPObject()),然后您可以使用标准PHP日期格式化函数格式化它们,然后再使用它们你的MySQL INSERT / UPDATE语句。

答案 1 :(得分:4)

将日期格式更改为yyyy-mm-dd,将文件另存为CSV并将其导入数据库。