Well Jim,
I have to say that I'm not a programmer by any means ( more a technical user). If I knew exactly what your table details were I would no doubt work through it in time and get there in the end but I wouldn't like to just offer my code attempts in the forum. I'd take far too long and I'd probably drive you crazy. I think anyone though would need to know a lot more about how your db works. For example, what would you propose to do if someone wanted to book a slot of, say one and a half hours, and there was apparently a time available when required, but only for, say, 1 hour. How would you test for that? I think you're setting yourself a very difficult task when it could be so simple.
Wouldn't you be far better off redoing it so that there are, say, 24 predetermined one hour (or even 48 half hour) slots per day in the diary, (ie fields in the underlying table) which could easily be tested to see if nul? Some one booking one and a half hours would then book three consecutive slots. It would be easy to use, and relatively easy to program, I feel. However there are plenty of gurus here, for sure, who might offer you the clever solution you're looking for. So I might be talking rubbish.
Sorry if I haven't been much help.
Tel