1

Тема: как вывести все поля за месяц в MySQL?

Вопрос программистам!

Есть функция   

mysql_query("SELECT * FROM table WHERE date='2010-01-30'", $db); 

т.е. выводится поле с датой 30 января,

а как вывести все поля за январь?

2

Re: как вывести все поля за месяц в MySQL?

Скорее уж вопрос по SQL smile

select * from table where date >= '2010-01-01' and date < &#039;2010-02-01&#039;

или

select * from table where year(date) = 2010 and month(date) = 1

Второй запрос проще, но работает медленней. Если в БД много записей - ощутимо медленней.

3

Re: как вывести все поля за месяц в MySQL?

Перенес тему в "Кодинг"

4

Re: как вывести все поля за месяц в MySQL?

Спасибо за помощь. Все сработало.

5

Re: как вывести все поля за месяц в MySQL?

Пожалуйста, обращайтесь еще.

6

Re: как вывести все поля за месяц в MySQL?

Безумный Программист, а как насчёт если Хранить дату в UNIXTIME? Т.е. хочу узнать как лучше хранить дату в UNIX или форматом 12-12-10 типа такого... т.е. что лучше или быстрее работает?

7

Re: как вывести все поля за месяц в MySQL?

Насколько я знаю, в самой БД datetime все равно хранится в unix timestamp. По всей видимости, в 99% случаев выгоднее использовать datetime (не unix), поскольку это позволяет использовать возможности самой СУБД для работы с датой и временем, издержки же на преобразование строки-даты в unix timestamp в большинстве случаев незначительны. По крайней мере быстро придумать пример, где использование unix timestamp явно выгоднее datetime, мне что-то не получается (300wmr тому, кто придумает и аргументировано убедит меня в своей правоте). Если Вы не уверены, что имеете дело с таким редким случаем, используйте datetime.

Также важно помнить об оптимизации запросов, подобно приведенному выше примеру. Я постоянно сталкиваюсь с задачами, где приведенная оптимизация существенно ускоряет выполнение запроса.