Are this 3 different things? - a date - a time (interval) - a datatime?
I would advise to use one datetime field.
This can then be used for date, time, datetime, and even timestamp.
There could be a discussion about the need of a date type and a time type when a datetime type could also be used in those situations.
But why not define more than 1?
Personally i dont see a advantage of putting a interfall type (relative) in the same type as a date(absolute) type.
I should suggest to implement it as is done in Java.
One date type which contains a certain point in time (e.g. in seconds from 1970).
An interval should be an arithmetical type (e.g. integer).
And datetime is just a date.
Rob
