Ошибки округления с плавающей запятой. 0,1 не могут быть представлены точно в базе-2, как в базе-10, из-за недостающего простого коэффициента 5. Так же, как 1/3 принимает бесконечное число цифр для представления в десятичной форме, но составляет «0,1» в базе-3, 0.1 принимает бесконечное число цифр в базе-2, где оно не находится в базе-10. И компьютеры не имеют бесконечного объема памяти.
Мне потребовалось некоторое время, чтобы понять это ...
Проблема в том, что «2011-03-13 02:53:50» является незаконным из-за перехода на летнее время между 2 и 3 AM, поэтому все временные значения между 2 и 3 часами утра в любой день введения ДСТ недействительны. То же самое для '2016-03-13 02:32:21' и т. Д.
Измените системный часовой пояс на тот, который не использует DST, и вы должны быть в порядке.
Все еще не уверен, что проблема / была, может быть, комбинация версий CentOS и MySQL. Я изменил столбец на datatime (6) вместо timestamp (6), и мне удалось успешно импортировать все мои данные.
Я думаю, вам нужно использовать некоторые str-преобразования в MySQL перед вставкой. Или подготовить данные в соответствующем формате, прежде чем делать запрос к MySQL.
Формат микросекунд также неверен. Документация MySQL четко заявляет об этом :
Значение DATETIME или TIMESTAMP может включать в себя конечную часть дробных секунд до микросекунд (6 цифр) точность.
blockquote>
UPDATE: на моем localhost у меня есть ту же версию MySQL, и она работает. Попытался выполнить преобразование
select str_to_date("2011-03-13 02:53:50.000000", "%Y-%m-%d %H:%i:%s.%f") as `t`
и получил:
+----------------------------+ | t | +----------------------------+ | 2011-03-13 02:53:50.000000 | +----------------------------+ 1 row in set (0.00 sec)
Вот [SQL] SQLFiddle, который подтверждает вещь в другой версии MySQL.
У меня заканчиваются идеи, я думаю, что проблема связана с «локальным сбоем» в структуре таблицы или конкретной версией MySQL + OS.
Вам нужно попробовать следующее:
STR_TO_DATE( '2011/03/13 02:53:50', '%Y/%m/%d %H:%i:%s')
, иначе вы должны вставить даты, используя разделитель тире (-), например
'2011-03-13 02:53:50'