2017-05-25 146 views
0

我有CSV文件,我想將CSV行插入到Mysql數據庫。 當我從列的START DATE(格式Datetime)CSV中插入「23.05.17 17:53:25」時,我得到2023-25-17 17:53:25。CSV到Mysql插入日期時間

如何我可以轉換,這在DB獲得正確的日期格式2017年5月23日十七時53分25秒

T`hanks

+0

從@eskeli答案 - >'$ =插件 「INSERT INTO stugayc(CHECKID,CHECKSTDATE,CHECKENDDATE)VALUES(」 。 $ row [0]。 「,STR_TO_DATE(」。$ row [1]。「,'%d。%m。%y%H:%i:%s'),'」。 $ row [2]。 「')」;'這將工作 – codtex

+0

您可以用'STR_TO_DATE()' –

回答

1

這可能不是一個正統的解決方案,但你可以簡單地解析輸入字符串並以mysql預期的格式重新創建日期時間。

// for each line in the csv 
list($datePart, $timePart) = explode(' ', $fields['date']); 
list($d, $m, $y) = explode('.', $datePart); 
$dbDate = "$y-$m-$d $timePart"; 

這會更好地添加一些輸入驗證,但如果你正在做的是數據導入腳本沒關係。

+0

我嘗試,但我得到 \t 0000-00-00 00:00:00 –

0

你應該使用MySQL的STR_TO_DATE功能:

mysql> SELECT STR_TO_DATE('23.05.17 17:53:25', '%d.%m.%y %H:%i:%s'); 

結果:

2017年5月23日17時53分25秒

你甚至可以使用的緊湊形式時間字段%T

mysql> SELECT STR_TO_DATE('23.05.17 17:53:25', '%d.%m.%y %T'); 

結果:

2017年5月23日17時53分25秒

+0

這是我的插入代碼 $ =插件「INSERT INTO'stugayc'('CHECKID','CHECKSTDATE','CHECKENDDATE' ) VALUES('$ row [0]','STR_TO_DATE('$ row [1]','%d。%m。% y%H:%i:%s')','$ row [2]')「; –

+0

你應該考慮使用[Prepared Statement](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)來防止SQL注入,但我認爲它應該按預期工作。 – eskeli

+0

我不能這樣做)) –