MYSQL запрос, сортировка по дате!

Тема в разделе "PHP", создана пользователем Acidrayne, 31 май 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    Добрый день возник вопрос следующегохарактера!Есть база с записями, дата в таблице записана следующим образом "2009-05-31 или 2009-03-27 короче в таком порядке вначале год потом месяц потом день" скажите как мне вывести все записи с таблицы например за этот месяц? Что мне нужно подставить в WERE ? Может существует какая нибудь более удобная форма для записи даты чтобы можно было ей удобно оперировать?
     
  2. OnArs

    OnArs

    Регистр.:
    30 авг 2008
    Сообщения:
    259
    Симпатии:
    74
    Для хранения времени и(или) даты есть специальные типы поля:
    • datetime
    • date
    • time

    А вот как сортировать их за сегодняшний день не скажу... Не знаю... :confused:
     
  3. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    как вариант:
    PHP:
    SELECT FROM `table_nameWHERE `field_nameLIKE "%2009-05%";
    ИМХО, более удобно хранить дату в формате unix timestamp.
     
  4. webjema

    webjema Создатель

    Регистр.:
    1 сен 2007
    Сообщения:
    46
    Симпатии:
    6
    можно еще твой "формат" конвертнуть в человеческий datetime или timestamp
    а тогда можно фильтровать как угодно генерируя нужный тебе диапазон дат и запрос делая:
    WHERE `field_name` >= STARTDATE AND `field_name` < ENDDATE;
    выведет тебе нужные данные из указанного периода
     
  5. tirrex

    tirrex

    Регистр.:
    9 ноя 2008
    Сообщения:
    213
    Симпатии:
    60
    примерно так:

    where MONTH(date_field) = MONTH(CURRENT_DATE);
     
  6. Acidrayne

    Acidrayne

    Регистр.:
    30 сен 2007
    Сообщения:
    296
    Симпатии:
    20
    С этим я разобрался, но просто немного неправильно я все объяснил, вернее объяснил правильно но не совсем то что нужно! Мне нужно в цикле вывести таблицу, например :

    -----------------------------------------------------------
    дата |user1|user2|user3|user4|
    -------------------------------
    2009-01| | | | |
    --------------------------------------------------------
    2009-02| | | | |
    --------------------------------------------------------

    Например выбераем все данные из таблицы, и потом нужно например в первую строку вывести данные по всем юзерам где месяц равен январю, во второй строке тоже самое но месяц +1! Как лучше всего это релизовать?
     
  7. upandhigh

    upandhigh

    Регистр.:
    11 фев 2009
    Сообщения:
    235
    Симпатии:
    89
    тебе нужно свой столбик с датой обозвать типа AS `somename` и в конце отсортировать по нему весь результат т.е. ORDER BY `somename`

    те что то типа такого будет у тебя:
     
  8. newd

    newd Создатель

    Регистр.:
    13 ноя 2007
    Сообщения:
    46
    Симпатии:
    4
    я чаще дату в timestamp integer храню, сортировка на раза два. Только вот форматировать приходится при каждой выборке
     
  9. upandhigh

    upandhigh

    Регистр.:
    11 фев 2009
    Сообщения:
    235
    Симпатии:
    89
    для майскула особой разницы то и нету что сортировать дату или ИНТ, здесь правда он сортирует строку можно оставить просто сортировку по дате, и вот в примере человека скорее всего еще понадобится DISTINCT вокруг функции CONCAT или той которая выводит у него ДАТУ, чтобы убрать дубли - или сделать груп бай. и еще не понятно user1, user2 это столбцы или же это он хочет так обычные строки вывести. обновлённый запрос должен быть типа этого:

    или через груп бай
     
    malerok нравится это.
Статус темы:
Закрыта.