Неверное значение даты и времени загрузка данных в MySQL из файла с функцией str_to_date

#mysql #str-to-date

Вопрос:

Это сводит меня с ума, я пытаюсь сделать это в течение 2 дней, ищу здесь и в документации mysql безрезультатно.

У меня есть файл с этими данными:

 Test,String 1,Completed,full,04/20/21 12:10:01,1618913401
Test,String 2,Completed,full,04/20/21 12:15:01,1618913701
Test,String 3,Completed,full,04/20/21 12:30:02,1618914602
Test,String 4,Completed,full,04/20/21 13:30:01,1618918201
Test,String 5,Completed,full,04/20/21 14:00:01,1618920001
 

И я пытаюсь вставить его в mysql с помощью этой команды:

 LOAD DATA LOCAL INFILE 'output2.csv'
INTO TABLE test
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
(`Session Type`, `Specification`, `Status`, `Mode`, @StartTime, `Start Time_t`)
SET `Start Time` = STR_TO_DATE(@StartTime, '%d/%m/%y %T');

Result:
Query OK, 5 rows affected, 10 warnings (0.00 sec)
Records: 5  Deleted: 0  Skipped: 0  Warnings: 10

MariaDB [data]> SHOW WARNINGS;
 --------- ------ ------------------------------------------------------------------------ 
| Level   | Code | Message                                                                |
 --------- ------ ------------------------------------------------------------------------ 
| Warning | 1411 | Incorrect datetime value: '04/20/21 12:10:01' for function str_to_date |
| Warning | 1048 | Column 'Start Time' cannot be null                                     |
| Warning | 1411 | Incorrect datetime value: '04/20/21 12:15:01' for function str_to_date |
| Warning | 1048 | Column 'Start Time' cannot be null                                     |
| Warning | 1411 | Incorrect datetime value: '04/20/21 12:30:02' for function str_to_date |
| Warning | 1048 | Column 'Start Time' cannot be null                                     |
| Warning | 1411 | Incorrect datetime value: '04/20/21 13:30:01' for function str_to_date |
| Warning | 1048 | Column 'Start Time' cannot be null                                     |
| Warning | 1411 | Incorrect datetime value: '04/20/21 14:00:01' for function str_to_date |
| Warning | 1048 | Column 'Start Time' cannot be null                                     |
 --------- ------ ------------------------------------------------------------------------ 
 

Start Time является типом даты и времени.

Комментарии:

1. Я думаю, что у вас есть свой %d и %m неправильный путь, попробуйте STR_TO_DATE(@StartTime, '%m/%d/%y %T');

Ответ №1:

Если вы посмотрите внимательно, дата находится в запутанном американском формате, месяц не может быть 20 🙂 Так что просто исправьте формат, как показано ниже

 STR_TO_DATE('04/20/21 14:00:01', '%m/%d/%y %T');
 

Комментарии:

1. Святое дерьмо. Я потратил на это несколько часов, спасибо, чувак.

2. Повезло, что дата не 01/01/21 была, прошло бы 9 месяцев, прежде чем этот стренгли пошел не так 🙂