Which RFC? I am curious.
That would be RFC 4180 CSV.
If you look for that in the source-code then you can find that mentioned.
fwiw: the dataset itself has all the functionality required to do what you want. E.g. you can create a database using all types of available fielddefs (date, string, integer, float) and the TCVSDataSet component will sort accordingly and as intended.
Where things seem to go wrong imho is the reading of the actual data from the file. IMO It should respect the fielddefs (and not "overwrite" them). Perhaps a separate import method or similar could be a possible solution (perhaps a class helper).
Once loaded into memory it is normal that the data in memory does not change its (storage) type so converting things at runtime is not the road to take as that would not be normal database behaviour (whatever is considered normal).
SQL databases for example can influence this by casting/converting the fields from a query to another type (that is a feature of the SQL language). In such cases if you want to change the type then one can simply change the query to match expectations. CVSDataset however does not have such luxury.
If you want more detailed information then I would have to dive even deeper into the sources of CVSDataset but in all honestly I personally find that a bit of a waste of time as it is pretty easy to import a CSV to f.e. a sqlite table though I completely understand your reasoning why you want to improve things (and if possible I can certainly try and see what can be done to help).