2011-11-17 203 views
11

我正在做我第一次導入到CSV的CSV,並注意到CSV中的日期格式爲31-Jan-2011。我怎樣才能將其轉換爲2011-01-31,以便我可以將它放在DATE數據類型中?首先想到的是讓PHP進行轉換,然後將其插入到第二個表中,但我猜這是...不正確。將CSV導入到具有不同日期格式的MySQL

+0

看起來像某人已經回答了這個:http://stackoverflow.com/questions/5616494/how-to-convert-csv-date-format-to-into-mysql-db。我張貼它以防別人有這個問題。 – enchance

回答

31

您可以從CSV文件導入數據,例如在替代格式 -

LOAD DATA INFILE 'file_name.csv' 
INTO TABLE table_name 
FIELDS TERMINATED BY ';' 
LINES TERMINATED BY '\n' 
(id, column2, column3, @date_time_variable) -- read one of the field to variable 
SET date_time_column = STR_TO_DATE(@date_time_variable, '%d-%b-%Y'); -- format this date-time variable 

它會像'31 -Jan-2011' 的字符串格式,以正確的DATETIME數據類型。

更多的信息在這裏 - LOAD DATA INFILE Syntax

+0

[this]如何?(http://dba.stackexchange.com/questions/90498/import-csv-file-into-mysql-with-custom-data-change?noredirect=1#comment162435_90498)問題?請幫忙嗎?謝謝 –

0
mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%Y-%m-%d'); 
+------------------------------------------------+ 
| DATE_FORMAT('2009-10-04 22:23:00', '%Y-%m-%d') | 
+------------------------------------------------+ 
| 2009-10-04          | 
+------------------------------------------------+ 
1 row in set (0.00 sec) 
0

如果文件不太大,請將CSV加載到Excel中,然後使用格式化命令更改日期表示。

+0

你的答案並不真正幫助解決SQL問題。此外,Excel並非真的太容易嵌入批處理過程中。 –

+0

這對我來說很簡單,只需將excel中的日期格式更改爲「yyyy-mm-dd」,保存爲csv並導入。 –