non ho detto che li vede "diversi". Dico che per convenzione in php i dati NUMERICI che iniziano con 0 sono in rappresentazione OTTALE. da 1 - 9 in decimale e con la x in exadecimale.
Quindi un NUMERICO 0930 non viene letto in modo corretto a meno che sia comparato come stringa.
Se li testi comw stringa "dovrebbero" andare bene... sempreche' in $ora_appuntamento ci sia un valore numerico con lo 0 davanti.
if ($ora_appuntamento == '0930' )
non ho capito esattamente quello che fai, ma se estrai un numero dal db con uno 0 davanti, significa che il campo nel db e' dei due: o un numerico zerofill oppure un campo char/varchar.
Se funziona 0700 e non 08xx/09xx allora il campo e' in "qualche modo" un valore numerico in notazione ottale. tutto qui.
Stampa le variabili che hai estratto dal db e vedi cosa contengono.