一个日期列的默认日期格式在MySQL中是YYYY-MM-DD HH:MM:SS。
我尝试加载的数据文件中有一个日期字段,日期格式是DD-MON-YY HH:MM:SS。当我使用LOAD DATA命令加载这个文件时,数据库会混淆,并将所有日期条目设置为0000-00-00 00:00:00或NULL。
这是我使用STR_TO_DATE选项进行的测试,但它不起作用。
测试文件(test_temp.csv)
c1, c2 07-JUN-12 22:50:19, "abc" 07-JUN-13 22:50:19, "bcd"
测试表(temp_test)
describe temp_test; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | c1 | datetime | YES | | NULL | | | c2 | varchar(10) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+
数据加载命令:
load data infile '/var/lib/mysql/DataSet-1/temp_test.csv' ignore into table temp_test fields terminated by ',' enclosed by '"' lines terminated by 'rn' ignore 1 lines (@var_c1,c2) set c1 = STR_TO_DATE(@var_c1,'%d-%b-%y %h:%i:%s');
输出
Query OK, 2 rows affected, 2 warnings (0.00 sec) Records: 2 Deleted: 0 Skipped: 0 Warnings: 0 MySQL> show warnings; +-------+------+-------------------------------------------------------------------------+ | Level | Code | Message | +-------+------+-------------------------------------------------------------------------+ | Error | 1411 | Incorrect datetime value: '07-JUN-12 22:50:19' for function str_to_date | | Error | 1411 | Incorrect datetime value: '07-JUN-13 22:50:19' for function str_to_date | +-------+------+-------------------------------------------------------------------------+ MySQL> select * from temp_test; +------+------+ | c1 | c2 | +------+------+ | NULL | abc | | NULL | bcd | +------+------+
问题出在:
07-JUN-12还是07-Jun-12)或%d-%b-%y)或Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
您的
STR_TO_DATE()的格式字符串无效。您的样本数据中的小时使用24小时制(%H或%k),而不是12小时制(%h)。您可以在这里查看所有可能的日期格式说明符。将
修改为
%d-%b-%y %H:%i:%s ^^您的语句可能如下所示
使用您的样本数据加载后