I have had the same problem, what helped and made it very simple to do is insted of making one date field make a month field a day field and a year field for your start and end dates
Then your code could look like this
$month_start = (month placed in db);
$day_start = (day placed in db);
$year_start = (year placed in db);
$month_start = (month placed in db);
$day_start = (day placed in db);
$year_start = (year placed in db);
$sql=mysql_query("SELECT * FROM news WHERE (month='$month_start' AND year = '$year_start' AND day >= '$day_start') AND (month ='$month_end' AND year = '$year_end' AND day <= '$day_end'");
This would give you every thing between those days.
if you had:
$month_start = 12
$day_start = 12
$year_start = 2002
$month_end = 12
$day_end = 20
$year_end = 2002
it would give you all the news from the days 12 - 20.
Hopefully this helps