2015-04-19 3 views
0

Я нанял фрилансера некоторое время назад, чтобы проанализировать сайт, на котором было поле datetime. Мне пришлось поставить проект на задний план вскоре после завершения фрилансера, и теперь, когда я возвращаюсь к нему, я заметил некоторые проблемы, когда я заходил в базу данных MySQL.Преобразование нескольких форматов datetime в один формат mysql datetime

В частности, есть два различных формата DateTime, и я не могу понять, как обновить их в единую MySQL сортируемого поля даты и времени

Apr 8 - 2:23 AM         <- for current year updates 
Tue, Dec 2, 2014 06:06:00 PM   <- for all previous year updates 
2014-12-02 06:06:00PM     <- desired format 

У меня есть уникальный идентификатор в таблице, так что я могу выбрать и легко обновляйте форматы. Весь формат «8 апреля - 2:23 утра» составляет < '6340', например. Я также создал столбец «date_proper» для обновления текущего столбца даты.

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

ответ

0

Для этого вам необходимо использовать str_to_date(). Во-первых, исправьте столбец date_proper, так что это datetime. Форматы должны обрабатываться на входе и выходе. Надлежащее для хранения дат с использованием собственных форматов:

alter table modify date_proper datetime; 

Затем вы можете обновить значение:

update t 
    date_proper = (case when format < '6340' 
         then str_to_date(concat(year(now), ' ', col), '%Y %b %d - %h:%i %p' 
         else str_to_date(substr(col, 5), '%b %d, %Y %h:%i:%s %p' 
        end); 
+0

работал отлично. Спасибо. –

Смежные вопросы