За последние 24 часа нас посетили 62915 программистов и 1743 робота. Сейчас ищут 974 программиста ...

Сортировка по дате

Тема в разделе "PHP для новичков", создана пользователем greenzlat, 28 июл 2011.

  1. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Подскажите как отсортировать правильно по дате в порядке убывания.
    Запрос такой: [sql]
    $news = mysql_query ("SELECT *, DATE_FORMAT(date,'%d.%m.%Y %H:%i') AS date FROM `news` WHERE `kat_news` = $id ORDER BY `date` DESC limit 7",$db);
    [/sql]

    Получает, что у меня сортирует по дате только, несмотря н месяц.
    Например так:

    30 августа 2011
    29 ноября 2011
    28 января 2011

    А должно быть так:
    29 ноября 2011
    30 августа 2011
    28 января 2011
     
  2. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    Для этого и используют unix время-http://ru.wikipedia.org/wiki/UNIX-время.
    Если вы пишете свой проект , то лучше переписать под данный метод , если уже много новостей , то всё-равно перепишите и напишите конвертер для существующих новостей. Потратите меньше сил и времени.
     
  3. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    То есть формат времени в БД надо делать Timestamp?
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    siiXth
    имеет в виду в б.д. формат INT и писать туда то, что возвращает php-функция time()
    Что касается сортировки по MySQL-дате, то:

    [sql]SELECT *, DATE_FORMAT(`date`, '%d.%m.%Y %H:%i') AS `date_f` FROM `news` WHERE `kat_news` = $id ORDER BY `date` DESC LIMIT 7;[/sql]
     
  5. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    ну и конечно появляются лёгкие способы сравнения дат , вычитания и т.п. в человеко-понятный вид спокойно переводится через date()
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    независимо от выбранного типа сортироваться будет правильно.

    выбирая тип задайте себе вопрос "зачем?" если таблица будет читаться только в phpmyadmin, то удобнее использовать родные для MYSQL типы. но обычно все пишется и читается через php, значит наглядное представление даты нах не нужно!!! ты все равно будешь форматировать дату внутри скрипта (шаблона вывода) - значит удобнее оперировать родным для PHP unix time, так меньше бесполезных промежуточных преобразований.
     
  7. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    С обычными датами MySQL это делать не сложнее. Сравнивать можно через обычные операторы, для арифметики есть DATE_ADD() и DATE_SUB()...
     
  8. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    я малоопытен и потому для меня всегда время было в циферках =) и потому считаю это нормой. просто даже юзеру который незнает что такое часики unix и никогда не работал с датами по бд будет намного проще разобраться в арифметике чем в новых и даже непонятных операторах ;)