Salve ho un problemino con il between.

Sto cercando di effettuare una agenda visibile per giorno, settimana e mese.

Il problema me lod a nella visualizzazione per settimana:

Codice PHP:
$dataevento=(int)(date("N") - $x); 
$dataevento=date("Y-m-d", (int)($calendar - ((60 60 24) * $dataevento))); 
$arrdata=explode("-",$dataevento); 
$orainizio mktime($hour,0,0,$arrdata[1],$arrdata[2],$arrdata[0]); 

$QueryWeek=mysql_query("SELECT * FROM agenda WHERE DataEvento='$dataevento' AND '$orainizio' BETWEEN OraInizio AND OraFine") or die (mysql_error()); 
while(... 
allora i dati me li estrae ma il problema è questo se ce un appuntamento che inizia esempio alle 12:00 mi visualizza l'evento bene dalle 12 fino all'orario di fine appuntamento tipo 14:00.
Ma se invece l'appuntamento inizia alle 12:10 oppure alle 12:30 insomma oltre le 12:00 mi visualizza l'appuntamento partendo dalle 13:00.

come mai mi ma questo visto che 12:10 o 12:30 si trova nel confronto del between?