如何在PostgreSQL中表示具有不确定性的日期[英] How to represent dates with uncertainty in PostgreSQL

本文是小编为大家收集整理的关于如何在PostgreSQL中表示具有不确定性的日期的处理方法,想解了如何在PostgreSQL中表示具有不确定性的日期的问题怎么解决?如何在PostgreSQL中表示具有不确定性的日期问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

PostgreSQL提供date格式数据类型来存储日期.但是,这些日期的问题是,据我所知,他们无法确定不确定性.

有时人们不知道某事的完整日期,但知道它发生在1995年1月或" 1999或2000"(date2).可能有几个原因:

  • 人们不记得确切的日期;
  • 确切的日期从根本上是未知的:例如,一个人最后一天出现,几天后发现死亡;或
  • 我们处理未来的事件,因此仍然有一些可能出现问题.

我想知道是否有数据类型可以存储这样的"日期"以及它们的递交方式.对于某些操作,例如date2 < 20001/01/01应该为true,date2 < 2000/01/01 be possible和date2 < 1998/01/01应该为false. >

如果没有这样的数据类型,则在自己构建此类"表"的好实践是什么?

推荐答案

有几种不同的方法来处理模糊日期.在PostgreSQL中,您可以使用

  • 一对日期列(Ermiest_possible_date,最新_possible_date),
  • 日期列和精密列('2012-01-01','Year')或
  • a 范围数据类型(detterange)或
  • varchar('2013-01-2?'','2013 - ?? - 05')或
  • 其他任何数据类型的表或表格.

范围数据类型是最新版本的PostgreSQL.您可以在任何SQL DBMS中使用其他.

您需要的模糊性是依赖应用程序的.查询模糊日期的方式取决于您选择的数据类型或结构.您需要坚定地掌握需要存储哪种模糊性以及用户需要回答的问题的类型.您需要测试以确保您的数据库可以回答他们的问题.

例如,在法律系统中,日期可能会被铭记不佳或污损.有人可能会说:"这是2014年1月的某个星期四. ".要记录这种模糊性,您需要另一个表.

或邮戳可能会损坏,因此您只能阅读" 14,2014".您知道它是在14日邮戳的,但是您不知道哪个月.同样,您需要另一个表.

除非您跳过一些篮球,否则其中的一些(全部?)不会给您三个值的逻辑. ("可能"不是有效的布尔值.)

其他推荐答案

要添加Mike发布的内容,我将使用日期评论,例如:

date            Comment
-------------------------------------------------------------------
1/1/2010        Sometime in 2010
7/8/2014        Customer says they will pay the second week in July
1/1/2015        Package will arrive sometime next year in January

另外,您可以使用日期零件.创建一个单独的专栏,用于一年,月和一天.在未知中的任何事物都留为空白.

本文地址:https://www.itbaoku.cn/post/1763827.html