и start_time были varchar, но я чувствую, что поле времени более подходящее.
Да, определенно. Как только вам понадобится выполнить какую-то «временную операцию» со значением в любой момент, например, добавить или вычесть определенное количество минут, VARCHAR станет проблемой.
Или это так? более стандартная практика - иметь одно поле и комбинировать два значения, заданные пользователем?
Поскольку время не является обязательным, я думаю, что вы должны хранить его отдельно - в противном случае, как бы вы различализапись, которая не имеет время, а та, которая имеет его по совпадению, говорит 00:00:00
во временной части полной даты-времени? Вы можете NULL свой отдельный временной столбец, но вы не можете сделать «часть» значения datetime NULL.