Как обновить пустое время в datetime MySQL - PullRequest
0 голосов
/ 07 января 2020

Мы храним дату и время в столбце нашей базы данных MySQL, отформатированном в TEXT, но когда наше время и дата должны выглядеть следующим образом:

' xxxx-xx-xx 00:00 : 00 '

Время удалено или не указано в нашем datetime, и поэтому наше datetime, в указанное время c, содержит только дату:

' xxxx-xx-xx '

Прежде всего мы хотим выяснить, почему это происходит, но сейчас нам нужно отредактировать каждую строку и убедиться, что дата и время также показывают время. Мы попытались изменить затронутые строки с помощью этого запроса:

UPDATE table SET TIME(col_datetime) = '00:00:00' WHERE LENGTH(TIME(col_datetime)) = 0;

Приведенный выше запрос должен обновить время в datetime для col_datetime , где продолжительность равна 0. К сожалению, мы получить ошибку, и мы не можем выполнить запрос. Это ошибка:

В синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который следует использовать рядом с '(time_start) = '00: 00: 00' WHERE LENGTH (TIME (time_start)) = 0 'в строке 2

Как мы можем изменить время нашей даты и времени, когда время не отображается?

1 Ответ

3 голосов
/ 07 января 2020

Не хранить даты в виде строк. Вместо этого вы хотите использовать тип данных datetime: он имеет временную часть, которая по умолчанию равна 00:00:00, если она не указана.

Вот небольшой сценарий преобразования для этой цели:

alter table mytable add col_datetime_new datetime;
update mytable set col_datetime_new = col_datetime;
alter table mytable drop col_datetime;
alter table mytable change column col_datetime_new col_datetime datetime;

Это использует тот факт, что вы используете формат YYYY-MM-DD в своих строковых датах, поэтому преобразование в datetime кажется бесполезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...