まず、MySQLには時間データ型が含まれています。それを利用することを強くお勧めします。
とにかく、あなたのテーブルのために(これはアカデミックスケジューリングのためですが、同じ基本的な考え方が当てはまります):
DaysOfWeek
----------
DowID int
DayOfWeek varchar(10)
Users
------------------------
UserID int autoincrement
UserName varchar(50)
PassHash varbinary(100)
FirstName varchar(50)
LastName varchar(50)
DOB datetime
Semesters
----------------------------
SemesterID int autoincrement
SemesterName varchar(50)
SemesterNumber int
AcademicYear int
CalendarYear int
Classes
-------------------------
ClassID int autoincrement
ClassName varchar(50)
ClassCode varchar(25)
Schedule
----------------------------
ScheduleID int autoincrement
UserID int
SemesterID int
DowID int
ClassID int
BeginTime time
EndTime time
さて、月曜日の1時から2時の間に誰かが対応可能かどうかを確認するために必要なのは次のとおりです。
select
count(*) as classes
from
schedule sch
inner join users u on
sch.userid = u.userid
inner join semesters sem on
sch.semesterid = sem.semesterid
where
u.username = 'rmcdonald'
and sem.academicyear = 2009
and sem.semesternumber = 1
and sch.dowid = dayofweek($mytime)
and $mytime between sch.begintime and sch.endtime
$mytime
そこでチェックしている時間に置き換えてください。