как обновить значение даты и времени с т.е. 0000-00-00 00:00:00 значение до нуля

#mysql

#mysql

Вопрос:

У уважаемого сэра есть таблица, в которой я беру столбец updatetime с типом данных datetime, а также по умолчанию он равен null. Теперь я хочу заменить некоторые значения с 0000-00-00 00:00: 0 на null, когда я пытаюсь выполнить запрос на обновление в phpmyadmin, он дает мне ввести описание изображения здесь.Пожалуйста, помогите мне, как обновить этот столбец.`

 UPDATE tbl_table_time
set update_datetime = NULL
WHERE update_datetime = '0000-00-00 00:00:00'

 
 ID  Updatetime (Datatype datetime)
1   0000-00-00 00:00:00

2   2020-12-03 16:19:07

3   0000-00-00 00:00:00

4   2020-12-03 16:19:07

5   0000-00-00 00:00:00

6   0000-00-00 00:00:00

7   0000-00-00 00:00:00


 

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

1. Пожалуйста, отправьте сообщение об ОШИБКЕ в виде текста, а не связанного изображения

Ответ №1:

Проблема не SET update_datetime = NULL в том, а в WHERE update_datetime = '0000-00-00 00:00:00' вашем запросе. Ошибка указывает на то, что 0000-00-00 00:00:00 это недопустимое значение Datetime, которое является правильным, поскольку это наименьшее возможное значение Datetime 1000-01-01 00:00:00 . Из-за этого MySQL не хочет сравнивать значения даты и времени. Чтобы преодолеть это, проще всего преобразовать Datetime в фактическую строку для сравнения. Вот пример запроса:

 UPDATE tbl_table_time SET update_datetime = NULL WHERE CAST(update_datetime AS CHAR(20)) = '0000-00-00 00:00:00'
 

Имейте в виду, что это не очень эффективно и может занять некоторое время в больших базах данных. И поскольку 0000-00-00 00:00:00 это ошибочное состояние, его следует избегать, и вы должны проверить, как оно все равно оказалось в базе данных. MySQL автоматически преобразует недопустимые даты в это нулевое состояние, но это также можно отключить. Для получения более подробной информации см. https://dev.mysql.com/doc/refman/8.0/en/datetime.html