при поиске в System.pas TDate и TDateTime определяются следующим образом:
TDateTime = type Double;
TDate = type TDateTime;
TTime = type TDateTime;
очевидно, что TDate и TDateTime одинаковы.
Я просто изо всех сил пытался работать с TDate и TDateTime, потому что я ожидал, что TDate содержит только часть даты, а не часть времени.
Теперь мне интересно: какой в этом смысл? Когда я объявляю переменную как TDate, она должна содержать дату, а не дату и значение времени.