#php #sql
#php #sql
Вопрос:
Я пытаюсь упорядочить базу данных по дате, но у меня возникают проблемы с ее сортировкой. База данных создается в SQL с помощью PHP, и столбец, который я хочу использовать для сортировки, добавляет данные о дате в этом формате:
2011-10-26 07:10
Указанная выше дата также является переменной. РЕДАКТИРОВАТЬ: изменено на ‘datetime’ благодаря предложениям
Есть идеи, чтобы я мог сортировать строки в таблице, используя столбец даты?
Я создал отдельный скрипт, чтобы сузить эту проблему:
<?php
$con = mysql_connect("localhost","root","");
mysql_select_db("thoughtsdata",$con);
$order = "SELECT *
FROM `thoughts`
ORDER BY `thoughts`.`DateTime` ASC
LIMIT 0 , 30";
if(!mysql_query($order,$con))
{
die('Could not order database: ' . mysql_error());
}
mysql_close($con);
?>
Теперь я не получаю ошибок при запуске этого скрипта в моем браузере, но моя таблица остается несортированной:
Edit Inline Edit Copy Delete Hey sdfasdf 2011-10-26 19:41:00
Edit Inline Edit Copy Delete Hey asdfasdf 2011-10-26 07:47:00
Edit Inline Edit Copy Delete Hey dfasdfasdf 2011-10-26 19:47:00
Edit Inline Edit Copy Delete aaa how to sort this 2011-10-26 07:54:00
Edit Inline Edit Copy Delete aaa any progress!!?? 2011-10-26 08:13:00
Edit Inline Edit Copy Delete oh no! grrr 2011-10-26 08:21:00
Edit Inline Edit Copy Delete zzTOp thinking about sorting this out! 2011-10-27 19:12:00
Мне кажется, что происходит то, что база данных сортируется, но она не остается такой.
Комментарии:
1. вау, спасибо за быстрый ответ. Я смог легко изменить тип данных в php на datetime … теперь у меня возникли проблемы с сортировкой таблицы из php-скрипта. У меня есть эта строка в php: mysql_query(‘SELECT * ИЗ мыслей’, ‘ORDER BY DateTime’);
2. возможно, is неправильно выполнил инструкцию
3. Правильный синтаксис будет следующим: mysql_query(«ВЫБЕРИТЕ * ИЗ порядка мыслей ПО имени поля»);
4. DateTime — это столбец name….is это то же самое, что и имя поля?
5. Добавьте любой вывод из скрипта (включая все ошибки) в свой пост. Если выходных данных нет, проверьте журналы ошибок вашего веб-сервера, чтобы узнать, что произошло.
Ответ №1:
Вы могли бы попробовать использовать предложение order, подобное этому:
ORDER BY UNIX_TIMESTAMP(fieldname) ASC
Однако, если ваше поле имеет YYYY-MM-DD hh:mm
формат, похожий на внешний вид, альфа-сортировка должна работать правильно. Все это при условии, что вы работаете с существующей системой и не можете / не имеете права изменять тип данных поля.
Комментарии:
1. Я могу изменить тип данных полей, но у меня возникли проблемы с сортировкой столбца hte из созданного мной php-скрипта. Есть предложения?
2. Если вы на самом деле сортируете ее в самом скрипте, посмотрите на функцию usort() PHP: us3.php.net/manual/en/function.usort.php
3. хм, я хочу отсортировать данные в таблице SQL, но из PHP-скрипта. Вот что я пытался выполнить: mysql_select_db(«thoughtsdata»,$con); $order = mysql_query(«ВЫБРАТЬ * ИЗ порядка мыслей ПО дате и времени»); if(!$order,$con) { die(‘Не удалось упорядочить базу данных: ‘ . mysql_error());}
Ответ №2:
Лучший способ преобразовать ее, например, с помощью php, в «обычную» дату / время / временную метку, а не использовать сортировку.
Основная причина этого в том, что это намного быстрее, чем использование сортировки по строке.
Ответ №3:
Вы можете ПРИВЕСТИ или преобразовать varchar в реальное datetime, это то, что должно быть, поскольку это действительно datetime.