On Mon, 22 Aug 2022 at 11:14, stefan eichert <stefaneich...@gmail.com> wrote:

> I can also fully support what Alex has written. I am an archaeologist at the 
> Natural History Museum Vienna and PostgreSQL is a perfect Open Source 
> software and we really love working with it for our archaeological and 
> (pre)historical projects.

We are very glad to hear that and I would be happy to help you further.


> The limitation of dates before 4713 BC however is a bit of a bottleneck and 
> we need to use certain workarounds, that, as Alex has written, are error 
> prone and cumbersome.
> The need for dates before 4713 has various reasons:
>
> For example if we have certain dates, like dendrochronological ones, that in 
> some cases can give you a certain time span in which a tree has been cut, 
> like in autumn 6000 BC (so lets say between March and beginning of July), 
> then we would like to map this information in the database with an earliest 
> and latest timestamp that would in that case be 6000BC, March 1st and 6000BC, 
> June 30th.
>
> Radiocarbon dates are similar, even if they only provide a timespan in a 
> format of years before present with a certain +/- range.
> They would be mapped again with an earliest date, e.g. 6322 BC, Jan. 1st and 
> a latest possible one: 6262, Dec. 31st.
>
> In many other cases we are using years as starting point for periodisations, 
> that of course are arbitrary concepts, but still are needed for statistically 
> working with data and for various calculations.
>
> In order to deal with all dates, historical and prehistoric ones, in a 
> consistent way, the implementation of timestamps/dates for before 4713 BC 
> would be very helpful, as we really do have dates before 4713 BC we are 
> working with, that in some cases also have information on months respectively 
> days.

One possibility is to store dates as the INTERVAL datatype, using the
convention for Before Present, rather than worrying about BC/AD.

create table arch (i interval year);
insert into arch values ('-5000 years');
select * from arch;

      i
-------------
 -5000 years

This can also be used in a column specification like this INTERVAL
YEAR TO MONTH, which would store only years and months.
e.g.
CREATE TABLE arch (age INTERVAL YEAR TO MONTH);


Will that be sufficient, or do you need or want more?

-- 
Simon Riggs                http://www.EnterpriseDB.com/


Reply via email to