> On Sep 28, 2020, at 3:14 PM, Joe Abbate <j...@freedomcircle.com> wrote:
> 
> Hello,
> 
> I'm considering creating a TYPE for what may be called a "possibly imprecise 
> date" (pidate).  The most obvious use is for recording dates such as births 
> or deaths of historical individuals, where we may know that someone died 
> precisely on a given year-month-day, but the birth may only be known down to 
> year-month or just the year (or perhaps we know precisely the baptism date 
> [Adam Smith], but not the actual birth, so we want to record the former but 
> qualified so it can be annotated on display).  Another use is for 
> publications, like magazines that are issued on a monthly basis or journals 
> that are issued on a quarterly or seasonal basis.
> 
> We currently have two instances of this kind, using a standard DATE column 
> plus a CHAR(1) column that encodes (on a limited basis for now) the YMD, YM 
> or Y level of precision, and a simple SQL function to return a textual 
> representation of the pidate.  It would be nice to generalize this before 
> going further.
> 
> The first option I explored was creating a composite type with the two 
> attributes, but that doesn't allow specification of DEFAULTs, NOT NULL or 
> CHECK expressions on the precision code attribute.  It seems I'd have to 
> create a DOMAIN first, then use DATE and that domain to create a composite 
> TYPE, to finally use the latter in actual tables.  That layering looks 
> cumbersome.
> 
> Another option, which I havent't tried, is to subvert PG by creating an empty 
> table, since that creates a "record type", but even if possible that would be 
> a hack.
> 
> Finally there's the base TYPE.  This entails writing some seven functions "in 
> C or another low-level language" (does PG support *any* other such 
> language?), plus installing a library with those functions in a production 
> environment.  Doable, yes, but not very friendly either.
> 
> Am I overlooking something or is the practice of creating abstractions in 
> object-relational databases mostly unchanged?
> 
> Regards,
> 
> Joe
> 
> 
just record all three fields (day, month, year) with nulls and do the to-date 
as needed.



Reply via email to