sql 'str_to_date' 函数错误截断了不正确的日期值并且未显示正确的时间格式

sql 'str_to_date' function error truncated incorrect date value and doesn't show the right time format

我有一个这样的 sql 脚本:

LOAD DATA LOCAL INFILE 'XXXXXX/sample.csv'
INTO TABLE test_01
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
IGNORE 1 ROWS (id, @DATE_01, @DATE_02, VALUE, @DATE_03)
SET `DATE_01` = STR_TO_DATE(@DATE_01, '%d/%m/%Y'), 
`DATE_02` = STR_TO_DATE(@DATE_02, '%d/%m/%Y'),
`DATE_03` = STR_TO_DATE(@DATE_03, '%d/%m/%Y')

csv 文件如下所示:

如果我检查三个日期列的格式,它们是 'dd/mm/yyy hh:mm'

我的文件总行数是2000+,但我只能得到1100+行,其他的显示错误

1107 row(s) affected, 64 warning(s): 1292 Truncated incorrect date value: '01/12/2010 00:00' 1292 Truncated incorrect date value: '03/02/2011 00:00' 1292 ...........
Records: 2365  Deleted: 0  Skipped: 1258  Warnings: 7095

新创建的 table 中的日期格式如下所示:yyyy-mm-dd 00:00:00

为什么时间都转换为'00:00:00',我该如何解决这个问题?我是 SQL 的新手,我已经为这个问题纠结了一整天了,请帮忙....

这是预期的日期时间格式:

您给 STR_TO_DATE() 的格式说明符只包括日期部分,不包括时间部分。您需要像这样扩展它:

LOAD DATA LOCAL INFILE 'XXXXXX/sample.csv'
INTO TABLE test_01
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
IGNORE 1 ROWS (id, @DATE_01, @DATE_02, VALUE, @DATE_03)
SET 
    `DATE_01` = STR_TO_DATE(@DATE_01, '%d/%m/%Y %H:%i'), -- here
    `DATE_02` = STR_TO_DATE(@DATE_02, '%d/%m/%Y %H:%i'), -- same here
    `DATE_03` = STR_TO_DATE(@DATE_03, '%d/%m/%Y %H:%i')  -- and here