|
|
|
| есть база данных где указаны дни рождения формата 1985-03-24 и так у каждого пользователя.
Хочу сделать список всех дней рождения пользователей сайта.
Выборку по месяцу делаю. типа
select * from `users` WHERE `birthday` LIKE '%-".$r."-%'
|
где $r это номер месяца
хочу сделать сортировку по дню рождения (не по году а по дню)
Подскажите. как сделать.?
можно ли выбрать сортируя в запросе из базы или сортировать массив-результат в php? | |
|
|
|
|
|
|
|
для: MikeSVB
(23.09.2009 в 11:25)
| | спс если попытались подумать, но вопрос уже решён. ))) | |
|
|
|
|
|
|
|
для: MikeSVB
(23.09.2009 в 11:25)
| | Дык
select * from `users` WHERE `birthday` LIKE '%-".$r."-%' order by birthday
|
дата в таком формате как раз по дню отсортируется, а потом по месяцу, а потом по году. | |
|
|
|
|
|
|
|
для: DJ Paltus
(23.09.2009 в 11:49)
| | '1985-03-24' ?
С чего бы это ? | |
|
|
|
|
|
|
|
для: Trianon
(23.09.2009 в 13:06)
| | хоть я и решил проблему.
--------------------------------------
по поводу хранения. даж не знаюпочему там так хранятся данные. это не моя прихоть ) предыдущий программист чего-то программировал.
решил проблебу выборкой из базы по месяцу после добавлял в массив по дате, и вывел в порядке возрастания
5 строчек вышло и не грузит скрипт. | |
|
|
|
|
|
|
|
для: MikeSVB
(24.09.2009 в 09:29)
| | у вас спросили почему число 24? что за календарь такой?
Тип поля DATE?
_____
пипец... даже удалять не стал... ну нет у меня в марте 24 числа
всё... башка не варит... смотрите, смейтесь, тыкайте пальцем... так мне и надо... | |
|
|
|
|
|
|
|
для: MikeSVB
(24.09.2009 в 09:29)
| | Кстати почему для выборки вы используете LIKE, а если понадобится вывести дни рождения за два месяца или за три месяца? Или от текущей даты до конца месяца?
SELECT * FROM `users`
WHERE `birthday`
BETWEEN '$start' AND '$end'
ORDER BY birthday;
|
| |
|
|
|
|
|
|
|
для: Valick
(24.09.2009 в 10:38)
| | Ну а еще подумать? | |
|
|
|
|
|
|
|
для: Trianon
(24.09.2009 в 12:04)
| | дальше думалка пока слабовата, дальше методом н. т. (т.е. нужно больше практики) | |
|
|
|
|
|
|
|
для: Valick
(24.09.2009 в 13:06)
| | В табличном результате поля `birthday` оказались заполнены следующими значениями:
1980-03-20
1985-06-20
1990-04-15
1995-07-15
2000-05-10
2005-08-10
|
Предложите, пожалуйста, такие значения переменных $start и $end, чтобы запрос
$sql = "SELECT * FROM `users`
WHERE `birthday`
BETWEEN '$start' AND '$end'
ORDER BY birthday";
|
оказался в состоянии выбрать родившихся в летние месяцы. | |
|
|
|
|
|
|
|
для: Trianon
(24.09.2009 в 13:25)
| | намёк понял
$start="6";
$end ="8";
$sql = "SELECT * FROM `users`
WHERE MONTH(birthday)
BETWEEN '$start' AND '$end'
ORDER BY RIGHT(`birthday`, 5), `birthday`";
|
| |
|
|
|
|
|
|
|
для: Trianon
(24.09.2009 в 13:25)
| | ы... сегодня мой день!
продолжаю тормозить... | |
|
|
|
|
|
|
|
для: Valick
(24.09.2009 в 15:09)
| | >ы... сегодня мой день!
рождения? :) | |
|
|
|
|
|
|
|
для: MikeSVB
(24.09.2009 в 09:29)
| | Хранится там всё правильно.
И ORDER BY , который я показал, должен был вывести список в нужном Вам порядке.
Чего решать-то? | |
|
|
|
|
|
|
|
для: MikeSVB
(23.09.2009 в 11:25)
| | сотрировку можно сделать по любой функции.
к примеру ORDER BY RIGHT(`birthday`, 5), `birthday` | |
|
|
|