2

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

4

2 回答 2

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 年缺少闰年存在问题。Excel 的值为“60”表示为 1900 年 2 月 29 日。这很有趣,我没有意识到 Excel 有这个错误。

因此,上面的代码适用于所有大于 61 的值。

于 2013-03-23T19:54:53.593 回答
3

尝试这个

        $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);
于 2013-10-25T06:42:17.547 回答