вопрос такой - в поле data (оно обычное VARCHAR а не DATE) в БД даты хранятся в формате - 01.03.16,25.01.15, если делаю сортировку выборки из БД так Код (PHP): ORDER BY data DESC то он сортирует только по первому значению поля т.е. "01" затем "25" а не по всей дате т.е. на выходе получается: 01.03.16 25.01.15 а не 25.01.15 01.03.16 подскажите пожалуйста как сделать???? p.s.:может можно както столбец data c данными например 01.03.16 - разбить на 01, 03, 16, и указать параметры сортировки день/месяц/год? Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
Преобразуйте в DATE, DATETIME или TIMESTAMP, и всё будет нормально. Зачем даты хранить varchar? В привычный нам формат преобразовать не составляет труда, и это делается при выводе Код (PHP): <?= date("d.m.Y", strtotime($row['date']); ?>
- объясняю на пальцах - это даты статьей спарсенных программой DATACOL (объясняю почему именно программой - т.к. будет в итоге до 150 сайтов с новостями поэтому и проще делать с ее помощью, а не писать 150 скпритов парсинга новостей под каждый сайт) - которая и делает парсинг контента по настраиваемым шаблонам, максимум к какому виду можно привести выгружаемую инфу для поля data из DATACOL это 01.03.16, но при этом БД не сортирует по дате нормальным образом, а разбить на 3 колонки Дату через программу не представляется возможным, поэтому и спрашиваю как можно разбить инфу из поля data, потом как-то опять собрать в массив чтобы отсортировать по убыванию даты и чтоб не потерялась другая инфа - url и title вопрос как можно написать скрипт например для того чтоб создавалась временная таблица с исправленными датами т.е. (дата, урл, тайтл) как обычно в БД 2016-12-15 - Временная таблица появляется только когда пользователь выходит на эту страницу
Проще всего будет преобразовывать при выборке примерно так: Код (PHP): select STR_TO_DATE(data, '%d.%m.%Y') as d from test order by d desc Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
Объясняю на пестиках и тычинках: алгоритм сортировки не зависит от происхождения данных. Даты будут сортироваться нормально, а не как кусок дерьма, если ты их будешь хранить правильно — как даты [внезапно™]. Не стоит здесь хвастаться парсингом и при этом демонстрировать невежество как программист. Ты скрипт-кидди, а это не доблесть. Добавлено спустя 22 минуты 47 секунд: Скопировать записи в таблицу с правильной сруктурой можно конструкцией INSERT…SELECT…. При этом в таблице-получателе поля с датой типа DATE, а в select в соответствующих позициях делаешь str_to_date() от кривых строк.