Реальное значение между отдельными полями даты и времени или 1 полем даты и времени заключается в индексации. Вы не хотите делать это:
выберите * из списка событий, где дата (startAt) = '2009-04-20'
в поле даты и времени, потому что он не будет использовать индекс. MySQL преобразует данные startAt в дату, чтобы сравнить их, что означает, что он не может использовать индекс.
Вы хотите сделать это:
выберите * из списка событий, где startAt МЕЖДУ '2009-04-20 00:00:00' И '2009-04-20 23: 59: 59'
Проблема с полем datetime заключается в том, что вы не можете использовать его составным индексом, так как значение довольно уникально. Например, составной индекс по событию startAt + не позволит вам выполнять поиск по дате + событию, а только по дате + событию.
Но если вы разделите данные между полями даты и времени, вы можете индексировать событие startDate + и эффективно выполнять поиск по нему.
Это просто пример для обсуждения, вы могли бы явно указывать на событие + startAt, и это сработало бы. Но вы можете захотеть искать / суммировать на основе даты плюс другое поле. Создание составного индекса для этих данных сделает его очень эффективным.