21.03.2006, 18:39
общий
это ответ
Здравствуйте, Андрющенко Вячеслав Васильевич!
как уже было сказано, при таком формате поля- невозможно.
Я лично предпочитаю хранить дату/время в timestamp. Можно сделать поле в БД или типа timestamp или int(14) или, например, varchar(14). Туда пишем то что возвращает time(). Потом берешь генерируешь timestamp для 00:00:00 - 01.01.2006 и для 23:59:59 - 31.12.2006. Выбираешь все что между этими двумя значениями элементарным сравнением через ">" и "<".
Минус этого варианта - нужны преобразования времени в timestamp и обратно. Плюс - получешь ВСЕ возможные данные о времени. И очень удобно сравнивать даты. Кстати, не забудь в запросе указать ORDER BY time, чтобы сортировака шла по полу времени и выведены были в хронологическом порядке. Если наоборот, т.е. от послденего, тогда ORDER BY time desc
Другой вариант. 3 поля:
Day int(2)
Month int(2)
Year int(4)
Пишешь туда день, месяц, год. Потом пишешь запрос:
SELECT *
FROM твоя_таблица
WHERE Year=2006
А дальше можно бдувя способами:
Либо через ORDER BY Month, Day, тогда будет отсортировано по месяцам, в хронологическом порядке. При совпадении месяцев будет идти сортировка по дням, тоже в хронологическом порядке (по возрастанию). Если нужно по убыванию - добавлешь desc и все.
Другой вариант, который в данном случае не имеет никаких преимуществ:
GROUP BY Month - бубут выбраны все записи для 2006 года и сгруппированы по месяцам.
GROUP BY не имеет смысла, если нет никаких операция агрегирования данных (не подсчитывается сумма, не считается количество и т.п.)
Если это извлечение нужно только для подсчет кол-ва статей, тогда:
SELECT Month, count(*) AS NumArticles [или count(ID), если ID не пустой]
FROM your_table
WHERE Year=2006
GROUP BY Month
В результате получится запрос из 2 полей:
Month и NumArticles, в строках будут месяцы и кол-во статей в них.
Вот только если месяца, пример, 5 нет, то и строки
+------+------------+
|Month | NumArticles|
+------+------------+
| 5 | 0 |
+------+------------+
Тоже не будет.
Итого:
Первый способ - если нужно извлечь и показать
Второй - если выводить статистику, потому что считать это все через MySQL удобнее, чем через php, если знаь SQL, конечно. А его знать очень советую.