如果在使用MySQL的LOAD DATA命令进行入库时,时间类型数据被转换成了0000-00-00。
这很可能是由于以下原因之一:
- 数据文件中的时间格式与MySQL默认的时间格式不匹配。例如,数据文件中的时间格式为“YYYY/MM/DD HH:MM:SS”,而MySQL默认的时间格式为“YYYY-MM-DD HH:MM:SS”。
解决方法:在LOAD DATA命令中指定正确的时间格式,例如:
LOAD DATA INFILE ‘data.txt’ INTO TABLE mytable FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘\n’ (col1, col2, @mydate) SET mydate = STR_TO_DATE(@mydate, ‘%Y/%m/%d %H:%i:%s’);
- 数据文件中的时间数据格式正确,但在表结构中定义的时间类型与数据文件中的时间格式不匹配。
解决方法:在表结构中重新定义时间类型,例如:
ALTER TABLE mytable MODIFY COLUMN mydate DATETIME;
或者,在LOAD DATA命令中使用CAST函数进行转换,例如:
LOAD DATA INFILE ‘data.txt’ INTO TABLE mytable FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘\n’ (col1, col2, @mydate) SET mydate = CAST(@mydate AS DATETIME);