2013-03-23 27 views
2

我一直在尋找遍佈網絡的這個答案,但不理解所有寫的東西。我嘗試從unix_timestamp()執行,但它返回錯誤的日期。 我所做的是將一個xls文件導入到數據庫中。它將日期轉換爲5位數字。 有沒有簡單的方法?任何幫助都會很棒。 這是我試過的。我試圖將Excel文件中的日期格式更改爲YYYY-MM-DD,但這不起作用。只需將mysql數據庫中的5位數字轉換爲日期

+0

你是什麼意思「這個沒有工作」嗎? – Oswald 2013-03-23 17:31:05

+0

我將其更改爲該格式,然後再次導入該文件,並且它仍然以5位數字的形式進入數據庫 – Ricky 2013-03-23 17:32:03

+0

什麼是MySQL字段的數據類型? – Oswald 2013-03-23 17:33:13

回答

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年閏年缺乏的問題。代表於二零零九年二月二十九日的「60」。這很有趣,我沒有意識到Excel有這個bug。

所以,上面的代碼工作,對所有大於61

+0

這個答案有用嗎? – wizlog 2016-07-28 19:47:52

1

值試試這個

 $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);