我有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
我有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
这可能不是一个正统的解决方案,但你可以简单地解析输入字符串并以mysql预期的格式重新创建日期时间。
// for each line in the csv
list($datePart, $timePart) = explode(' ', $fields['date']);
list($d, $m, $y) = explode('.', $datePart);
$dbDate = "$y-$m-$d $timePart";
这会更好地添加一些输入验证,但如果你正在做的是数据导入脚本没关系。
我尝试,但我得到 \t 0000-00-00 00:00:00 –
你应该使用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秒
这是我的插入代码 $ =插件“INSERT INTO'stugayc'('CHECKID','CHECKSTDATE','CHECKENDDATE' ) VALUES('$ row [0]','STR_TO_DATE('$ row [1]','%d。%m。% y%H:%i:%s')','$ row [2]')“; –
你应该考虑使用[Prepared Statement](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)来防止SQL注入,但我认为它应该按预期工作。 – eskeli
我不能这样做)) –
从@eskeli答案 - >'$ =插件 “INSERT INTO stugayc(CHECKID,CHECKSTDATE,CHECKENDDATE)VALUES(” 。 $ row [0]。 “,STR_TO_DATE(”。$ row [1]。“,'%d。%m。%y%H:%i:%s'),'”。 $ row [2]。 “')”;'这将工作 – codtex
您可以用'STR_TO_DATE()' –