Мое решение состояло бы в том, чтобы всегда иметь 2 даты, одно из которых время начала, другое время окончания. На мой взгляд, это будет «чище».
Способ получения открытых встреч выглядит примерно так:
SELECT *
FROM appointments
WHERE end_time = "0000-00-00 00:00:00" (or > in stead of = for all appointments)
Или, если оставить его пустым, примерно так:
SELECT *
FROM appointments
WHERE end_time IS NULL (or IS NOT NULL for all appointments)