Поскольку вам нужно инициировать запрос из PHP, разумно рассчитать временные метки для первого и последнего дня данного месяца в PHP и передать эти значения в качестве параметров в ваш запрос MySQL.Вам нужно что-то вроде этого:
function get_records_for_date($datestr) {
$results = array();
$ts = time();
if ($datestr) {
$ts = strtotime($datestr);
}
$first_day = mktime(0, 0, 1, date('n', $ts), 1, date('Y', $ts));
$last_day = mktime(23, 59, 59, date('n', $ts), date('t', $ts), date('Y', $ts));
$query = "SELECT * FROM yourtable WHERE start_date <= {$last_day} AND end_date >= {$first_day}";
$query_result = mysql_query($query);
while ($row = mysql_fetch_assoc($query_result)) {
$results[] = $row;
}
return $results;
}
И затем вы можете вызвать эту функцию без параметра, чтобы получить все записи за текущий месяц, или вы можете передать любую строку даты - которую можно проанализировать с помощью strtotime () - получить записи за определенный месяц.
get_records_for_date();
get_records_for_date('2009-09-12');
get_records_for_date('April 5, 2005');