the surface problem is that storing dates as strings in hledger format
(yyyy/mm/dd) doesn't guarantee sort order. An year of 12020 is a typo,
but goes unnoticed and sorts earlier than 2020. Splitting the date into
separate numeric columns for year, month and day makes sorting work as needed.
While there, replace in-memory storage from java's Date to a SimpleDate
object which just holds the year, month and day. Simplifies exchanging
dates with the database and fulfils the task of holding a date just
fine. The extra flexibility of adding intervals to dates or holding
also time components is not needed anyway.