Commit

925bc89

Maybe separate billable month/day/year columns, where null represents “unknown”? You could even expand that to add a -variance column to each so you know writhing that column’s number of years/months/days, or a Boolean “approximate” flag for each column.
That could work for simpler cases, but it gets complicated pretty quickly. EDTF is an existing standard that handles uncertain dates, approximate dates, ranges, open intervals, and unspecified components. The package uses a JSON column to store the EDTF representation and maintains a normal date column with a best guess, so existing queries and sorting continue to work. No need to invent a schema for all the possible variations. https://www.loc.gov/standards/datetime/
loc.govExtended Date Time Format (EDTF) Specification (Library of Congress)Extended Date Time Format. A supporting xml schema allowing for implementation of element set and is maintained in Network Development and MARC Standards Office, Library of Congress.

commit 925bc89

That said, if you needed more granular queries against the EDTF data itself, you could always use the RDBMS's native JSON functions. That gives you some flexibility without having to add a bunch of dedicated columns.