Выбор по месяцу

dnes

Новичок
Выбор по месяцу

Следуя стилю мана, формулирую задачу так:

Есть таблица `pets`. В ней в формате date заданы поля `birth` и `death`. Требуется определить количество животных, которые были живы в конкретном месяце конкретного года.

Можно ли это как-нибудь сделать одним запросом?
 

dnes

Новичок
SELECT count(*) AS total FROM `pets` WHERE ($month MONTH(birth) AND MONTH(death))";

Вроде получается. А мне-то такой "вывернутый" BETWEEN всегда казался жутким "некошер"!
 

yugene

Отошел от дел
Автор оригинала: dnes
SELECT count(*) AS total FROM `pets` WHERE ($month MONTH(birth) AND MONTH(death))";

Вроде получается. А мне-то такой "вывернутый" BETWEEN всегда казался жутким "некошер"!
забыл поставить < или > в запросе. и работать он будет неправильно, проверь для:
$month = 07.2005
birth = 06.2004
death = 08.2004
 

dnes

Новичок
поля `birth` и `death`заданы в формате date, т.е. например

birth - 2004-12-20
death - 2005-01-04

(подаренный на Новый год хомячок Пыха жил недолго :( )

строим запрос:

SELECT count(*) AS total FROM `pets` WHERE (($month BETWEEN MONTH(birth) AND MONTH(death)) AND ($year BETWEEN YEAR(birth) AND YEAR(death)))

Память о Пыхе не умрет - выписывается в списке живых за декабрь 2004 и за январь 2005
 

yugene

Отошел от дел
Автор оригинала: dnes
поля `birth` и `death`заданы в формате date, т.е. например

birth - 2004-12-20
death - 2005-01-04

(подаренный на Новый год хомячок Пыха жил недолго :( )

строим запрос:

SELECT count(*) AS total FROM `pets` WHERE (($month BETWEEN MONTH(birth) AND MONTH(death)) AND ($year BETWEEN YEAR(birth) AND YEAR(death)))

Память о Пыхе не умрет - выписывается в списке живых за декабрь 2004 и за январь 2005
Ну и? Как я понимаю, он и был живым в декабре и январе :)
 

dnes

Новичок
Конечно. Что, кстати, и требовалось.

Спасибо за посказку.
 

chira

Новичок
ещё вариант:
...
WHERE '200501' BETWEEN DATE_FORMAT(birth,'%Y%m') AND DATE_FORMAT(death,'%Y%m')
 

dnes

Новичок
chira

Спасибо! Так еще красивше. Тем более, что там еще пара параметров присутствует.
 
Сверху