2017-08-28 31 views
1

我通過使用在Excel中的CSV值這樣從Excel轉換十進制序列號到mysql正確

42973.74257

我想將其轉換爲MySQL的日期時間列:

DATE_ADD( '1900-01-01',INTERVAL(42973.74257 * 60 * 60 * 24)秒)作爲日期

然而,它會給我一個不正確的結果

2017年8月28日17:49:18.048000

而正確的結果應該是

2017年8月26日5:49:18 PM

它增加了2天的結果。因爲我有大約1M行,所以我不知道是否所有結果都不正確。

你們有沒有更好的辦法將序列號從excel轉換到mysql?

感謝,

^h

+0

默認情況下,MySQL日期使用YYYY-MM-DD格式。您可以使用[DATE_FORMAT()](https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format)函數進行不同的格式化。 –

+0

你爲什麼認爲這個價值是兩天呢?當我嘗試MySQL查詢'select to_days('2017-08-28') - to_days('1900-01-01');'我得到42973. –

+0

它增加了2天的結果。 8/26和8/28。所以我不確定查詢是否會爲整個數據庫產生不正確的結果 –

回答

3

你的答案是錯了兩天。

其中之一是因爲它實際上對待1900年1月1日,而不是0(ref)。

根據this blog post,它已關閉了另一天,因爲Excel錯誤地將1900年視爲閏年出於傳統兼容性原因。

如果在將值傳遞給公式之前從值中減去2,它應該可以工作。