SELECT * FROM table1
WHERE DATE_FORMAT(`yourField`,"%m-%d") BETWEEN "01-01" AND "01-30"
OR DATE_FORMAT(`yourField`,"%m-%d") BETWEEN "12-01" AND "12-31"
OR DATE_FORMAT(`yourField`,"%m-%d") BETWEEN "02-01" AND "03-31"
Таким образом, за год в вашей даты будут игнорироваться, вы просто должны правильно определить диапазоны. (Начало декабря до конца декабря, а не в январе, а затем следующего начала в январе)
В качестве примера для построения запроса в PHP:
$from = "2015-12-01";
$to = "2016-01-31";
if(substr($from, 0, 4) < substr($to, 0, 4)){
$query = 'SELECT * FROM table1
WHERE DATE_FORMAT(`yourField`,"%m-%d") BETWEEN "' . substr($from, 5) . '" AND "12-31"
OR DATE_FORMAT(`yourField`,"%m-%d") BETWEEN "01-01" AND "' . substr($to, 5) . '"';
}else{
$query = 'SELECT * FROM table1
WHERE DATE_FORMAT(`yourField`,"%m-%d") BETWEEN "' . substr($from, 5) . '" AND "' . substr($to, 5) . '"';
}
var_dump($query);
exit;
Of yourse вы должны добавить обычные методы защиты и добавить проверки на достоверность данных.
Вы можете использовать union all для получения комбинированных данных из обоих запросов в одном запросе –
hi Jordan, я уже обновлен по почте извините за неправильную информацию. Но я просто хочу получить все дни рождения независимо от года. Мы все знаем, что день рождения повторяется, поэтому он не против, если его 1990-е или 2000-е годы. – claire
Я обновил свой ответ в качестве вашего требования, сообщите мне, если он работает для вас или нет. –