Tach!
Was du da als Uhrzeit-Typ bezeichnest, ist eigentlich keine Uhrzeit, sondern eine Zeitdauer (wie in "Die Maschine läuft seit 56:28:13 (56 Stunden, 28 Minuten und 13 Sekunden).
Woraus entnimmst du das aus der Aufgabenstellung?
Abfragen nach "suche alle Termine um 12 Uhr" kannst du auch mit hour() auf einer Datetime-Spalte erledigen.
Termine ohne Datum, also "jeden Tag um 12 Uhr", könntest du wahlweise am Datum 0.0.0000 eintragen oder dann tatsächlich mit einer separaten Time-Spalte.
Jetzt soll es doch wieder nur ein Zeitpunkt und keine Dauer sein?
Wie auch immer, Abfragen, die sich erst Teile von Feldern holen müssen (wie HOUR(...)), können nicht über einen eventuellen Index abgewickelt werden und benötigen einen Full-Table-Scan. Wenn also die Uhrzeit eine derartige Rolle in der Anwendung spielt und nicht nur Beiwerk zum Datum ist, dann kann man schon abwägen, ob ein separates Feld sinnvoll ist.
dedlfix.