我一直在网上寻找这个答案,但不理解所写的所有内容。我尝试从unix_timestamp()执行,但它返回错误的日期。 我所做的是将xls文件导入数据库。它将日期转换为5位数字。 有一个简单的方法吗?任何帮助都会很棒。 这就是我尝试过的。我尝试将excel文件中的日期格式更改为YYYY-MM-DD,但这不起作用。
答案 0 :(得分: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月1日,也就是1899年12月31日。我怀疑1900年缺少闰年存在问题.Excel的价值是“60”代表2009年2月29日。这很有趣,我没有意识到Excel有这个错误。
因此,上述代码适用于所有大于61的值。
答案 1 :(得分:2)
试试这个
$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);