IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   MySQL сортировка дат (http://www.imho.ws/showthread.php?t=64894)

_ARMAGEDDON_ 23.07.2004 16:31

MySQL сортировка дат
 
В базе есть даты 12.01.2004 , 01.07.2004 , 24.06.2004 , 04.02.2004
их нужно отсортировать по убыванию, как это сделать?

select * from w_date order by wdate desc - сортирует только число до первой точки...

Sych 23.07.2004 16:45

Дату в mysql надо хранить как положено а не как придумаешь.

используй unix timestamp или другие форматы и средства для работы с датой предусмотренные самой базой.

is_absent 23.07.2004 16:46

Попробуй
Код:

order by date_format(w_date, '%Y%m%d') desc

Sheryld 23.07.2004 16:51

как вариант, перевод в timestamp и обычная сортировка цифр...

Sava 24.07.2004 04:14

2 is_absent: такой код тоже не проканает
Согласен с Sych и Sheryld, дату и время надо хранить в правильном формате, а не в текстовом, на выбор что предпочтительнее timestamp, date или datetime в зависимости от того что требуется, единственное время в timestamp, при обновлении записи, автоматически меняется на текущее.

is_absent 24.07.2004 14:41

Sava
RTFM. если уж прочитал про timespamp, то ты не мог не прочитать о том, что варчар приводится к дате. правда к стандартной... но не об этом спор... читаем вопрос:
Цитата:

_ARMAGEDDON_:
В базе есть даты
где тут написано, что там строка?

Sava 24.07.2004 15:32

is_absent
Никто не спорит о значении полей(это ессно даты), я говорю про тип поля.

Цитата:

_ARMAGEDDON_ :
В базе есть даты 12.01.2004 , 01.07.2004 , 24.06.2004 , 04.02.2004
Если значение поля по стандартному запросу извлекается в таком виде(без форматирования) , то тип поля никакого отношения к дате/времени не имеет. И естественно даты в таком виде будут сортироваться криво т.к. первым идет день, если уж никак не хочется менять тип поля для хранения дат, то лучше записывать в строку как YYYY.MM.DD тогда сортироваться и строка будет корректно.
А насчет того что varchar можно привести к дате, один вопрос, зачем? Можно же сразу задать нормально тип поля и потом извлекать оттуда значения с нужным форматированием. Может я не совсем понял твою мысль?

is_absent 24.07.2004 16:21

Sava
Если даты возвращаются в таком виде, еще не значит, что они так хранятся в базе данных. Возможно, так настроена локаль. Возможно, человек сам их записывает в таком виде. В последнем случае, даже перевод к типам дат(date, timestamp или datetime) не поможет. Если же тип поля все-таки один из названных -- решение либо date_format() либо просто сортировка по полю.
Может быть мы послушаем самого автора вопроса? :)

Sava 24.07.2004 20:07

Да, действительно хорош спорить на пустом месте:) пусть автор сам расскажет что и как. А после подробного описания поспорим. :)

_ARMAGEDDON_ 26.07.2004 12:34

всем спасибо, с помощью date_format вопрос решился
где вообще можно почитать что и как лучше хранить в базе? если такое есть конечно...

is_absent 26.07.2004 14:01

_ARMAGEDDON_
www.mysql.ru, www.mysql.com
Еще можно Дейта найти "Основы Баз Данных" лучше седьмое издание :)
она в принципе, о том, как и с чем едят базы данных...


Часовой пояс GMT +4, время: 19:41.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.