我需要使用PHPExcel将excel文件导入数据库,问题在于日期

时间:2014-10-14 04:10:40

标签: php phpexcel

我需要使用PHPExcel将excel文件导入数据库,问题在于日期,日期可以是excel文件中的任何格式。

当excel文件中的日期为12/12/2012(m / d / y)格式时,它会正确保存到数据库中,但如果excel文件中的格式日期为24/11/2014(d / m / y)它上传空白 当2012年12月24日(日/月/日)时,该值为2036-03-01

$data = $objWorksheet->getCellByColumnAndRow($col, $row);
if(PHPExcel_Shared_Date::isDateTime($data)){
  $cellValue = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
  $dateValue = PHPExcel_Shared_Date::ExcelToPHP($cellValue);

  $dob =  date('Y-m-d',$dateValue);                                         
} else{
  $datedata = "NULL";               
}

希望你能帮助我guyz

2 个答案:

答案 0 :(得分:2)

我会尝试格式化您正在使用的 SELECT 语句中的数据。让DB做时间工作。让PHP脚本真正发挥作用。

以下是MYSQL参考指南的链接,该指南介绍了在数据库端使用日期和时间的所有方法。

<强> http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

您正在寻找的是

SELECT date_format('2014-10-13 22:00:00, '%m-%d-%Y') from <table> WHERE <column> = <data>

这将输出 10-13-2014

从这里你应该能够弄清楚其余部分。

答案 1 :(得分:2)

需要提醒的是,Excel将日期和时间存储为序列日期或序列日期时间。这是自1900年1月0日以来的天数加上24小时工作日的一小部分。这个article包含了很好的解释。

您获得负-454654643的序列日期这一事实可能意味着Excel电子表格中格式的格式类型不正确。

您需要验证两件事:

  1. 在Excel中,使用Ctrl +`显示每个日期单元格的序列日期值。这些值都不应该是负数。然后使用Ctrl +`切换回默认的格式化日期视图。 (`键是键盘上tab键上方的键。)
  2. 右键单击日期单元格,导航至Format Cells > Number > Date > Type,并确保Type中指定的日期格式与您的意图相符。因此,如果您的日期要解释为d/m/y,请确保Type匹配。同样,m/d/y
  3. 希望这有帮助。