MySQL 1292 Неверное значение даты и времени
Я получаю эту ошибку, когда пытаюсь вставить "2011/03/13 02:53:50.000000000" в столбец отметки времени. Если я изменю 13 на 15, 14, 12 или 11, это не проблема. Я также попытался изменить / s на-и все еще нет.
Я просмотрел некоторые другие темы, связанные с этой ошибкой, но, похоже, ни одна из них не применима.
Я использую версию 5.7.9.
Спасибо Марк
5 ответов
Мне понадобилось время, чтобы понять это...
Проблема в том, что "2011-03-13 02:53:50" является недопустимым из-за перехода на летнее время между 2 и 3 часами утра, поэтому все значения времени между 2 и 3 часами утра в любой день введения летнего времени недопустимы. То же самое для "2016-03-13 02:32:21" и т. Д.
Измените часовой пояс системы на тот, который не использует DST, и все будет в порядке.
Вы должны попробовать это:
STR_TO_DATE( '2011/03/13 02:53:50', '%Y/%m/%d %H:%i:%s')
или же вы должны вставить даты, используя разделитель тире (-), как
'2011-03-13 02:53:50'
Все еще не уверен, в чем проблема / была, возможно комбинация версий CentOS и MySQL. Я изменил столбец на datatime(6) вместо timestamp(6) и смог успешно импортировать все свои данные.
Я думаю, что вам нужно использовать некоторые преобразования str в MySQL перед вставкой. Или подготовить данные в правильном формате, прежде чем отправлять запрос в MySQL.
Формат микросекунд также неверен. Документация MySQL ясно заявляет это:
Значение DATETIME или TIMESTAMP может включать в себя конечную долю доли секунды с точностью до 6 микросекунд.
ОБНОВЛЕНИЕ: на моем локальном хосте у меня та же версия 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)
Вот SQLFiddle, который подтверждает это в другой версии MySQL.
У меня заканчиваются идеи, я думаю, что проблема связана с "локальным сбоем" в структуре таблиц или конкретной версии MySQL+OS.
1292 (22007): неверное значение даты и времени: «2004-10-11 19:08:58.503079+05:30» для столбцаgrideye
.alerts
.timestamp
в строке 1
если вы получаете указанную выше ошибку, попробуйте это, я написал,
timestamp = parser.parse(data.get('timestamp'))
Я попробовал это, и это сработало для меня
timestamp = datetime.strptime(data.get('timestamp'), '%Y-%m-%dT%H:%M:%S.%f%z').strftime('%Y-%m-%d %H:%M:%S')