Как правильна написать выборку что бы вывести в записи отсортированными от текущей даты но без учёта года. То есть по дням рождения от текущей.
Спасибо!
Спустя 12 минут, 15 секунд (21.10.2011 - 15:46) dadli написал(а):
а етот формат как виглядит в базе?
Спустя 7 минут, 35 секунд (21.10.2011 - 15:54) AdminPRsam написал(а):
2000-10-10
Спустя 4 минуты, 11 секунд (21.10.2011 - 15:58) Renden написал(а):
AdminPRsam
SELECT * FROM tbl ORDER BY MONTH(`date`) DESC, DAY(`date`) DESC
Спустя 1 минута, 1 секунда (21.10.2011 - 15:59) m4a1fox написал(а):
А ORDER BY DATE() не пойдет?
Спустя 5 минут, 30 секунд (21.10.2011 - 16:04) AdminPRsam написал(а):
Цитата (Renden @ 21.10.2011 - 12:58) |
AdminPRsam <pre class="sh_sourceCode" rel="sql"> <span class="sh_keyword">SELECT</span> <span class="sh_symbol">*</span> <span class="sh_keyword">FROM</span> tbl <span class="sh_keyword">ORDER BY</span> <span class="sh_function">MONTH(</span><span class="sh_att">`date`</span><span class="sh_symbol">)</span> <span class="sh_keyword">DESC</span><span class="sh_symbol">,</span> DAY<span class="sh_symbol">(</span><span class="sh_att">`date`</span><span class="sh_symbol">)</span> <span class="sh_keyword">DESC</span> </pre> |
Так не получаэтся:
$result = mysql_query("SELECT * FROM people ORDER BY MONTH(`date`) DESC, DAY(`date`) DESC",$db);
Результат:
1978-12-13
1984-11-28
1987-11-09
1975-10-29
1955-10-25
1984-10-22
…
2009-03-21
1983-03-20
А должно : начинатися с
1984-10-22
955-10-25
то есть если сегодня 2011-10-21 а дни рождения 10.20 и 10.22 то 22 должно быть первым а 20 в самом низу
Спустя 10 минут, 51 секунда (21.10.2011 - 16:15) m4a1fox написал(а):
AdminPRsam
Цитата |
<pre class="sh_sourceCode" rel="sql"> <span class="sh_keyword">SELECT</span> <span class="sh_symbol">*</span> <span class="sh_keyword">FROM</span> tbl <span class="sh_keyword">ORDER BY</span> <span class="sh_function">MONTH(</span><span class="sh_att">`date`</span><span class="sh_symbol">)</span> <span class="sh_keyword">DESC</span><span class="sh_symbol">,</span> DAY<span class="sh_symbol">(</span><span class="sh_att">`date`</span><span class="sh_symbol">)</span> <span class="sh_keyword">DESC</span> </pre> |
Это у вас query получается? Однако!!!! Сеньор знает толк в извращении.......ИМХО конечно но весело!
Спустя 1 минута, 6 секунд (21.10.2011 - 16:16) AdminPRsam написал(а):
я думал это довольно распространенная задача, и у нее должно быть простое решение. Но видимо нет.
Спустя 10 минут, 6 секунд (21.10.2011 - 16:26) m4a1fox написал(а):
Это элементарно, но только если правильно знаешь синтаксис mysql!
Спустя 3 минуты, 36 секунд (21.10.2011 - 16:30) killer8080 написал(а):
Цитата (AdminPRsam @ 21.10.2011 - 16:04) |
то есть если сегодня 2011-10-21 а дни рождения 10.20 и 10.22 то 22 должно быть первым а 20 в самом низу |
ну так убери сортировку по месяцу
SELECT * FROM `people` ORDER BY DAY(`date`) DESC
Спустя 4 минуты, 53 секунды (21.10.2011 - 16:35) AdminPRsam написал(а):
Цитата (killer8080 @ 21.10.2011 - 13:30) | ||
ну так убери сортировку по месяцу SELECT * FROM `people` ORDER BY DAY(`date`) DESC |
Ну это понятно! Но тогда будет строить у кого число рождения больше тот и первый! А не от текущей даты!
Спустя 3 часа, 44 минуты, 20 секунд (21.10.2011 - 20:19) killer8080 написал(а):
AdminPRsam
так?
так?
SELECT *
FROM `tbl`
WHERE DAYOFYEAR(`date`)>=DAYOFYEAR(NOW())
ORDER BY DAY(`date`) DESC
Спустя 19 часов, 32 минуты, 9 секунд (22.10.2011 - 15:51) AdminPRsam написал(а):
Всем спасибо! Решил пока так: (может кому пригодиться).
Выбирает все даты от текущей на 356 дней. Потому ка мне, не нужно обрезать список, он должен выводиться полностью, но выводит только те которые будут в этом году. Следующий год не берёт.
Кто знает как дописать что бы вывело весть список буду благодарен!
SELECT *
FROM people
WHERE DATE_FORMAT(date, CONCAT(YEAR(NOW()),'-%m-%d')) BETWEEN DATE_SUB(NOW(), INTERVAL 1 DAY) AND DATE_ADD(NOW(), INTERVAL 365 DAY)
ORDER BY RIGHT(date,5)
Выбирает все даты от текущей на 356 дней. Потому ка мне, не нужно обрезать список, он должен выводиться полностью, но выводит только те которые будут в этом году. Следующий год не берёт.
Кто знает как дописать что бы вывело весть список буду благодарен!