1001 * Е.Г. *
$date = sprintf("'%04d-%02d-01'", $year, $month);
$query = "
SELECT
x,y,dateStart
FROM
tablename
WHERE
AND amount > 1000
AND dateStart >= $date
AND dateStart < $date+Interval 1 month
";
mysql_query($query, ...
Это создаст запрос, например,
WHERE
AND amount > 1000
AND dateStart >= '2010-01-01'
AND dateStart < '2010-01-01'+Interval 1 month
+ Interval 1 month
является альтернативой date_add () .
SELECT Date('2010-01-01'+Interval 1 month)
-> 2010-02-01
SELECT Date('2010-12-01'+Interval 1 month)
-> 2011-01-01
Таким образом, вы всегда получите первый день следующего месяца. У записей, которые вы хотите, должно быть dateStart до этой даты, но после или равного первому дню месяца (и года), который вы передали sprintf ().
'2010-01-01'+Interval 1 month
не меняется между рядами. MySQL вычислит термин только один раз и может использовать индексы для поиска.