За последние 24 часа нас посетили 18065 программистов и 1685 роботов. Сейчас ищут 1176 программистов ...

Сортировка по двум разным критериям

Тема в разделе "MySQL", создана пользователем xak2(2), 19 янв 2009.

  1. xak2(2)

    xak2(2) Активный пользователь

    С нами с:
    5 ноя 2008
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    Latvia, Riga
    Добрый вечер.

    Работаю над выводом лога событий и столкнулся с такой вот проблемой:
    Делал запрос для вывода событий по времени и дате используя запрос:
    [sql]SELECT DISTINCT `event`, `date` FROM `xxx` WHERE `user` = '$user' ORDER BY `date`, `time` DESC[/sql]
    И спустя некоторое время обратил внимание на 2 проблемы:

    С датами все в порядке, а вот время оказывается необходимо сортировать в обратном порядке (ASC), более того час с ведущим 0 по какойто причине оказался выше 14:58:04. Как мне построить правильный запрос и организовать все это дело? Для столбика date задан тип (DATE) и time (TIME), и данные в них хранятся в виде Y-m-d и H:i:s :?:
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Добрый :)

    Может и не совсем помогу, но хочу сказать следующее -- не путайте дату и временную метку (штамп). В контексте удобства это две разные вещи. Дата -- это дата рождения, дата начала кризиса. Штамп -- это дата и время написания поста, голосования. В последнем случае даты принадлежат современности и над ними очень часто производят математические операции, поэтому временные метки удобно хранить в UNIX_TIMESTAMP. Не поленитесь, перегоните все даты в него. Тогда и все вопросы отпадут.
     
  3. xak2(2)

    xak2(2) Активный пользователь

    С нами с:
    5 ноя 2008
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    Latvia, Riga
    Хммм, в половине функций использую mktime() и совсем забыл про него, дурья башка. Спасибо.
     
  4. xak2(2)

    xak2(2) Активный пользователь

    С нами с:
    5 ноя 2008
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    Latvia, Riga
    В общем перевел базу на unix timestamp и теперь в поле date храниться число сгенерированное функцией mktime(), но все же, при выводе вот такая белеберда (не понимаю почему):

    Поле date храню в типе VARCHAR
     
  5. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    [offtop]xak2(2), потом будет xak2(2)(2) или xak2(2)2 ?)[/offtop]
     
  6. xak2(2)

    xak2(2) Активный пользователь

    С нами с:
    5 ноя 2008
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    Latvia, Riga
    Ti
    Это не относится к вопросу :!:

    П.с. на смену ника были технические причины
     
  7. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    1. не увидел проблемы с
    — отсортировано согласно запросу (дата увеличивается, время убывает)

    2.
    - дату хранить не обязательно - можно сгенерить с timestamp
    - думаю тут SQL тоже верно отработал - дата и время увеличивается

    3.
     
  8. xak2(2)

    xak2(2) Активный пользователь

    С нами с:
    5 ноя 2008
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    Latvia, Riga
    Ti
    Ночью голова совсем видимо не варила, не обратил внимания на дату :D все впорядке судя по всему