![]() |
|
Модераторы: skyboy |
![]()
|
|
| JSawyer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 15.10.2010 Репутация: нет Всего: нет |
Есть база данных:
id | blabla | date | time формат time: hours:minutes am/pm например: 1 | кошка | 2011-02-01 | 07:00 pm 2 | хомяк | 2011-02-01 | 08:00 am (почему не использовал стандартный формат time отдельный вопрос, сейчас уже нет возможности исправить) Так вот. Нужно взять данные из таблицы с сортировкой по времени: SELECT * FROM `animals` ORDER BY `time` ASC Естественно выборка по времени будет некорректна (07:00 pm получается раньше 08:00 am). Как нужно делать правильную выборку? Это сообщение отредактировал(а) JSawyer - 26.1.2011, 11:49 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
перестроить таблицы. преобразовать дату + время в нормальный формат. если уж совсем никак, хотя бы преобразовать хранящееся время в 24-часовый формат. если и это - ну, никак, то в запрос делать ORDER BY locate('am', `time`), `time`. но это вообще жестяная жесть, так как не используются индексы. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
гоню
Это сообщение отредактировал(а) Zloxa - 26.1.2011, 11:58 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| JSawyer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 15.10.2010 Репутация: нет Всего: нет |
да, это то что нужно! только как я понял locate возвращает позицию первого вхождение, а у меня am/pm в конце. гугль не помог.. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
че? а сколько раз в строке "07:00 am" встречается подстрока "am"? Два раза? может, у тебя между временем и "am/pm" бывает разное количество пробелов, тогда если locate для "07:00 ам" вернет 6, а для "06:00 ам" вернет 9, то да, сортировка будет неожиданная. тогда лучше доработать до "ORDER BY locate('am', `time`) = 0" и с чем не помог гугл? |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |