sql'str\u to\u date'函数错误截断了不正确的日期值,并且没有显示正确的时间格式

vpfxa7rd  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(393)

我有这样一个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

新创建的表中的日期格式如下所示: yyyy-mm-dd 00:00:00
为什么时间都转换为'00:00:00',如何解决这个问题?我是sql新手,我已经为这个问题绞尽脑汁一整天了,请帮助。。。。
这是预期的日期时间格式:

nxagd54h

nxagd54h1#

要提供给的格式说明符 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

相关问题