PostgreSQL 10中更宽的默认日期范围?

PostgreSQL 10中更宽的默认日期范围?,postgresql,date,datetime,date-range,Postgresql,Date,Datetime,Date Range,我使用的是PostgreSQL 10,我在中看到date类型的最小范围为公元前4713年。有没有什么方法可以让mins更低,比如公元前5000年?或者我应该想出我自己的解决方案 您必须构建一个自定义解决方案,比如将日期保存为两个字段,例如date和额外的smallint偏移量 也许最干净的方法是定义您自己的数据类型,该数据类型内部使用date表示较新的值,内部使用smallint表示较旧的日期。您可以在此类型上定义自己的一组运算符,并将其作为正常日期使用。您可能希望存储hunter gather

我使用的是PostgreSQL 10,我在中看到
date
类型的最小范围为公元前4713年。有没有什么方法可以让mins更低,比如公元前5000年?或者我应该想出我自己的解决方案

您必须构建一个自定义解决方案,比如将日期保存为两个字段,例如
date
和额外的
smallint
偏移量


也许最干净的方法是定义您自己的数据类型,该数据类型内部使用
date
表示较新的值,内部使用
smallint
表示较旧的日期。您可以在此类型上定义自己的一组运算符,并将其作为正常日期使用。

您可能希望存储hunter gatherer客户的详细信息!是的,你必须带着你自己的解决方案来——就像把日期保存在int上的文本中一样难看,恐怕你得自己完成所有的数学运算。但是真的吗?你想储存什么确切的日期?@VaoTsun这是关于一个文化/历史项目的,所以必须确定古代的时代和日期。我在几年内寻找精确的答案。只保存古代年份就可以了,就像公元前5000年一样,但这也需要一个
日期
类型。这就是为什么我不能停到4713。如果公元前5000年发生了一场战争呢?想象一下,一位历史学家试图插入公元前5000年,却发现了一个错误@我不明白你说的,对不起。也许换个说法?谢谢,我在历史上并不擅长,当然,我们可能知道16世纪以来更精确的日期。我认为你可以做一些丑陋的破解,比如将5000 BC存储为1000 BC,并在其他字段中使用默认空值-4K,但这样的轮子需要知道最早的日期,以及一些函数或
语句时的大小写,或者
+interval-4K
构造。嗯-不-只要我尝试提出这些想法-我就知道这里的任何解决方案都是多么不可靠。。。也许你最好定义严格的日期,日期保留到公元前4713年,更早的日期保留在文本中,不参与日期运算是的,我也这么想。如果我将所有日期存储为默认AC,并且还有一个布尔值(0,BC/1,AC),然后我可以相应地保存或呈现日期,该怎么办?“问题”是,如果我想从BC中提取世纪,我还必须在将其呈现回UI之前执行(-1)。你认为这是可能的还是可行的?这是可能的,但整个企业面临很多问题。公元前20000年2月有28天还是29天?我认为一旦你开始问这样的问题,你就会放弃在公元前4000年之前储存日期的想法。也许你应该定义你自己的数据类型——我会更新答案。是的,你是对的。我认为我们将寻求最简单的解决办法。我将有一个ERA的“ERABAC”表,包含几个世纪的
int
范围和几年的
int
范围。用户只需在BC年内插入
int
,就这样。。。