Excel导入数据库过程日期格式转为数字问题解决

最近在写一个excel导入mysql的案例中,发现当导入的excel中的日期格式会转化为42425.4594328704类似的数据格式。

解析:

EXCEL的日期是以序列数的形式存储的,即保存的日期实际是这个日期到1900-1-1相差的天数。当单元格格式为数值时,就会显示出这个差值,即2016-02-26与1900-1-1相差42425天。

如果在输入数据前,单元格为常规格式时,EXCEL会自动将其转换为日期格式,如果是文本,当然只以文本方式保存了。

但问题在于,如果单元格已经有数据,你再将单元格从数值转为常规,EXCEL并不会将原来存储的数据自动转为日期,只有重新输入日期才行。而若转为日期格式的话,因原存储的是序列数,所以能转换为日期。

问题解决:
将时间转为距离时间戳1970年的天数的时间戳即可。

$vtime=(string)$v['L'];
$temp = (int)(($vtime - 25569) * 3600 * 24);
$info[$k-2]['vtime'] = date('Y-m-d H:i:s', $temp);

解决:

方法1:
复制日期数据,回到桌面新建文本文件,粘贴-复制,回到excel,在原数据区域粘贴即可。

方法2:
第一步,把电子表格中日期数据列复制到word中,在右下方的提示中选择仅保留文本,或者选择性粘贴文本。
第二步,选定复制文本转换为表格,文本分隔位置为段落标记,复制word中表格。
第三步,在excel中,将相应列转为文本格式,然后选择性粘贴——文本。得以成功转换。

方法3:
根据方法1的介绍,在数据导入数据库后,可以使用sql语句,进行计算来达到时间格式。
例如:update TBLAE t set t.startdt=to_char(t.startdt+to_date('1900/1/1','yyyy/mm/dd')-2,'yyyy/mm/dd')

Tags: PHP

添加新评论