Столкнулся с задачкой... У меня в таблица четыре поля типа TEXT где хронятся (премьера_мир, премьера_рф, релиз_двд, релиз_блю_рей)
и записи в данных полях такого типа 12 января 2003, 4 октября 2001 и т.д.
так вот задумал я изменить тип полей с TEXT на DATE
Но!!! Как же при этом сохранить все записи в данных полях... и не делать всё рутину по написанию PHP цикла с запросами к БД и прочей лабудой, тем более в таблице чуть больше чем 98,000 записей. =)
Делюсь с вами кучкой запросов в phpmyadmin
К примеру есть таблица dle_post поле premiere запись 12 января 2003
1) изменяем текстовой месяц на цифровой
UPDATE `dle_post` SET `premiere` = REPLACE(`premiere`,' января ','-01-');массово ищет и заменяет совпадение января на -01-
2) теперь мы имеем запись 12-01-2003 == ДД-ММ-ГГГГ ... но нам всё равно это не подходит так в таблице дата хранится в формате ГГГГ-ММ-ДД
UPDATE dle_post SET premiere = CONCAT( SUBSTRING( premiere, -7, 7), '-12') WHERE premiere LIKE '12-__-____';массово ищет текст где будет 12-__-____ ( "_" только число) патом CONCAT( SUBSTRING( premiere, -7, 7), '-12') (вырезаем часть записи из данной таблицы и получаем 01-2003 и дописываем с конца -12)
то есть мы искали совпадения по числу дня, патом вырезали число месяц и год (без дня) дописывали сзади день и сразу же возвращали запись в бд
3) теперь мы имеем запись 01-2003-12 == ММ-ГГГГ-ДД ... но нам всё равно это не подходит так в таблице дата хранится в формате ГГГГ-ММ-ДД
UPDATE dle_post SET premiere = CONCAT( SUBSTRING( premiere, 4, 4), '-01-', SUBSTRING( premiere, 9, 2) ) WHERE premiere LIKE '01-____-__';где мы сделали почти тоже самое что и в пункте 2 только искали уже по месяцу (который у нас в начале записи) и вырезаем уже отдельно год и отдельно день между ними вставлял месяц и возвращали запись в бд
4) теперь мы имеем запись 2003-01-12 == ГГГГ-ММ-ДД ... теперь нам это подходит так в таблице дата хранится в формате ГГГГ-ММ-ДД
ALTER TABLE `dle_post` CHANGE `premiere` `premiere` DATE NOT NULL DEFAULT '0000-00-00';делаем запрос на изменение типа даты
готово ..
Надеюсь кому то пригодится ))
С уважением Ваш Сергей Геннадьевич (D0Gmatist)