2017-05-25 158 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

我不能这样做)) –