Изменить формат даты для определенных идентификаторов - PullRequest
0 голосов
/ 19 сентября 2019

У меня проблема с форматом даты. Я ввел запись в формате гггг-мм-дд чч: ii и другие записи в формате дд-мм-гггг чч: ii и хочу изменить весь формат даты на дд-мм-уу чч: ii есть какое-то решение для этого.тип столбца VARCHAR

Я уже пробовал этот код:

Обновить все столбцы, содержащие дату в виде строки, до столбца даты

UPDATE metric SET `dateColumn` = str_to_date(`dateColumn`,'%d-%m-%Y');

Изменить таблицу

ALTER TABLE metric MODIFY `dateColumn` DATETIME;

Я ожидаю изменить весь формат даты из диапазона, который имеет гггг-мм-дд чч: ii на дд-мм-гггг чч: ii

Ответы [ 2 ]

0 голосов
/ 21 сентября 2019

Тип данных вашего столбца VARCHAR, поэтому, прежде чем переформатировать его, необходимо преобразовать его в тип данных DATETIME с STR_TO_DATE(), проверив его текущий формат, а затем применить новый формат ко всемстроки с DATE_FORMAT():

update metric
set dateColumn = date_format(
  str_to_date(
    dateColumn, 
    case
      when dateColumn like '__-__-____ __:__' then '%d-%m-%Y %H:%i'
      when dateColumn like '____-__-__ __:__' then '%Y-%m-%d %H:%i'
    end
  ),
  '%d-%m-%y %H:%i'
)
where dateColumn like '__-__-____ __:__' or dateColumn like '____-__-__ __:__' 

Предложение WHERE необходимо только в том случае, если есть и другие форматы.См. демо .

0 голосов
/ 21 сентября 2019

Применять различные форматы синтаксического анализа в зависимости от формата:

UPDATE metric SET
dateColumn = str_to_date(dateColumn,
  case
    when dateColumn like '__-%'
      then '%d-%m-%Y %H:%i'
    else '%y-%m-%d %H:%i'
  end)

Я не уверен в точном формате, который нужно использовать для синтаксического анализа, потому что мне было не совсем понятно из вопроса, но это должнобудь рядом, если не правильно.

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