Здравствуйте. Подскажите пожалуйста как отсортировать и сделать выборку по дате. Формат даты в БД: 22.10.2015 Пробою так: Код (PHP): $check=mysql_query("SELECT * FROM web ORDER BY date ASC"); Но, так сортировка выполняется не по целой дате, а по первому значению. Подскажите пожалуйста как правильно задать формат даты для сортировки?
Тип поля с датой не должен быть текстовым. Есть DATE, DATETIME и TIMESTAMP. Иногда бывает INT в котором хранится unix timestamp. Любой вариант лучше чем varchar для даты!!!11111111111111111111111111111111 Всё, что относится к "формату", это про Представление данных, а не про хранение. Ты можешь сделать любой формат уже при выводе. Хранить дату надо как дату. Тогда с сортировкой не будет проблем. viewtopic.php?f=20&t=50838
Я за таймстампы. Просты как сапог, позволяют "естественным" образом сравнивать, складывать, вычитать, делить любые временные метки. Умножать не советую, int не настолько жирен.
А я просто за счастье всего человечества ))) Не фанат ничего, реалист и обыватель. Про timestamp надо помнить, что это 4х байтовое время unix. Диапазон c 1970го по 2038.
Спасибо. Нашел такое решение: Код (Text): mysql_query("SELECT DATE_FORMAT(date,'%d.%m.%Y') AS date,url FROM web ORDER BY date DESC");
Ну почему бы и нет. Если тип исправлен на реальную дату и если Модель и Представление идут вперемешку… Такие вещи стоит пояснять. Иначе непонятно в чем здесь "решение". Добавлено спустя 18 минут 35 секунд: p.s. пробоу, пробывать выдает украинцев )
https://dev.mysql.com/doc/refman/5.0/en/datetime.html Добавлено спустя 1 минуту 2 секунды: в доке по v5.7 это место не изменилось )
а я о конкретном типе MySQL, чтобы кто-нибудь прочитав ваше сообщение, не понял вас неправильно. в 4х байтах помещается 2млрд с чуточкой значений. если время считается в секундах, никак невозможно дотянуть с 1901г до наших дней. так откуда ваши цифры? update: вероятно знаковое целое позволяет расширить диапазон. но попробуйте вывести echo date('Y-m-d', -1) в php или SELECT FROM_UNIXTIME(-1). Это запредельные значения.