El problema es por la forma en que estás "agrupando" las condiciones:
De nada sirven los paréntesis, porque el OR del final hará que todas las condiciones anteriores sean ignoradas cuando no se haya definido la hora, supongo que lo que pretendes es:
1- Forzar código de técnico y finalizado = 'no' (primer grupo de condiciones)
2- Además que la fecha u hora no estén definidas (segundo grupo de condiciones)
P.D. Muevo el tema a MySQL, puesto que el problema es base de datos y no PHP