当我尝试将CSV文件导入MySQL时,所有日期都变成了0000-00-00。CSV日期格式为DD/MM/YYYY,如16/11/2016。MySQL格式为:YYYY/MM/DD.我正在用phpmyadmin导入这个,这个日期转移怎么解决?
0000-00-00
DD/MM/YYYY
YYYY/MM/DD
3yhwsihp1#
在MySQL中,格式DD/MM/YYYY不是有效的日期。您可以将LOAD DATA与STR_TO_DATE沿着使用,将日期字符串解析为MySQL可以识别的实际日期:
LOAD DATA
STR_TO_DATE
LOAD DATA INFILE 'path/to/file.csv' INTO TABLE yourTable FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' ( col1, col2, @var1, col4 ) SET date_col = STR_TO_DATE(@var1, '%d/%m/%Y')
上面假设您的表有4列,并且您从CSV文件中阅读的第三列是有问题的日期。这里的技巧是每个日期字符串都将被动态Map到一个有效的日期类型,从而得到您想要的结果。
xxslljrj2#
我认为,你需要改变日期格式之前,添加到MYSQL数据库。
$old_date = date('dd/mm/yyyy'); $middle = strtotime($old_date); $new_date = date('yyyy/mm/dd', $middle);
3bygqnnd3#
另一个选择是使用CSV Lint plug-in for Notepad++。该插件可以检测csv文件中的数据类型,包括日期时间格式。您可以只选择“重新格式化”将所有DD/MM/YYYY值更改为YYYY/MM/DD。或者,也可以不使用LOAD DATA INFILE,而是使用一个菜单选项将csv文件转换为SQL插入脚本。
LOAD DATA INFILE
它将为csv文件中的每一行创建INSERT语句,每批1000条记录。另外,它还考虑了列数据类型和日期时间格式,并将自动将日期值转换为正确的SQL日期时间。
INSERT
生成的SQL脚本还包含一个CREATE TABLE部分,其中每一列都具有正确的数据类型。
CREATE TABLE
3条答案
按热度按时间3yhwsihp1#
在MySQL中,格式
DD/MM/YYYY
不是有效的日期。您可以将LOAD DATA
与STR_TO_DATE
沿着使用,将日期字符串解析为MySQL可以识别的实际日期:上面假设您的表有4列,并且您从CSV文件中阅读的第三列是有问题的日期。这里的技巧是每个日期字符串都将被动态Map到一个有效的日期类型,从而得到您想要的结果。
xxslljrj2#
我认为,你需要改变日期格式之前,添加到MYSQL数据库。
3bygqnnd3#
另一个选择是使用CSV Lint plug-in for Notepad++。该插件可以检测csv文件中的数据类型,包括日期时间格式。您可以只选择“重新格式化”将所有
DD/MM/YYYY
值更改为YYYY/MM/DD
。或者,也可以不使用
LOAD DATA INFILE
,而是使用一个菜单选项将csv文件转换为SQL插入脚本。它将为csv文件中的每一行创建
INSERT
语句,每批1000条记录。另外,它还考虑了列数据类型和日期时间格式,并将自动将日期值转换为正确的SQL日期时间。生成的SQL脚本还包含一个
CREATE TABLE
部分,其中每一列都具有正确的数据类型。