|
|
|
| Подскажите, пожалуйста, как можно выбрать месяц и дату, когда даты YYYY-MM-DD полностью в строках. То есть записаны памятные даты, а надо выяснить сколько еще в этом году отмечать. то есть год нас не интересует при сортировке. Например есть поле battle, а надо вывести по-порядку, что осталось праздновать, например:
5.10 отпразднуем kulikovska bitva которая прошла 1256 лет назад
16.10 отпразднуем kurskaja duga которая прошла 66 лет назад
10.12 отпразднуем poltavskaja bitva которая прошла 874 лет назад | |
|
|
|
|
|
|
|
для: hel
(18.09.2008 в 07:23)
| | с сортировкой попроще будет , в ORDER BY в отличие от GROUP BY
можно использовать алиасы
SELECT `id`, DAYOFMONTH(`time`) AS day, MONTH(`time`) AS month
FROM `table`
ORDER BY month, day
|
но посчитать сколько лет назад что-то было , не очень понятно как .
собираетесь-ли учитывать года до нашей эры , и сколько лет прошло это с учётом текущего времени и поправкой на переход с григорианского календаря ? | |
|
|
|
|
|
|
|
для: xx77
(18.09.2008 в 11:22)
| | подскажите еще можно ли вырать даты следующие за текущей. склеить как-нибудь DAYOFMONTH(`time`) и MONTH(`time`) в одну AS date например, а затем поставить условие WHERE date>$date , где $date - сегодня - 918 (18 сентября) а date к примеру 1012 (12 октября), т.е 1012>918 и. т. д. | |
|
|
|
|
|
|
|
для: hel
(18.09.2008 в 12:36)
| | для сравнения дат в таком формате как 918
, нужно добавлять нули к однозначным цифрам, чтобы 0111 и 1101 небыло одним и тем-же
а так способов много , читайте про функции MySQL для работы с датой
, можно строковыми функциями тоже.
что-то такое должно работать ,
SELECT
`id`,
DATE_FORMAT(`time`, '%e.%c') AS month_day
FROM `table`
WHERE DATE_FORMAT(`time`, '%m%d') > DATE_FORMAT(NOW(), "%m%d")
ORDER BY DAYOFYEAR(`time`)
|
если вместо DATE_FORMAT(NOW(), "%m%d") вставить 0918,
но именно с такой постановкой запроса
, я-бы подумал не сделать-ли другой принцип работы
, и не поубавить-ли как-то всяких функций для WHERE
UPD//
поменял знак на > .) | |
|
|
|