postgresql - 如何在 postgres 中存储不同精度的日期?

标签 postgresql date

我正在 Postgres 中存储来自 PubMed 的期刊论文数据,我想存储论文的出版日期。但是,有时日期是 just a year (见PubDate字段),有时是月和年,有时是日月年。

将这些数据存储在我的数据库中的明智方法是什么?

如果我使用 Postgres 日期字段,我显然还需要指定日期和月份,但在某些情况下我需要发明它们,而且我不喜欢丢失日期精度信息的想法.

为了我的目的,我认为我只需要年份,但我不知道对于所有可能的 future 目的来说都是如此。

也许我应该只为 daymonthyear 设置文本字段,然后我可以随时将它们转换为日期字段 future ,如果我需要它们?

最佳答案

我会将其存储为 date 并存储精度。

例如:

CREATE TYPE date_prec AS ENUM ('day', 'month', 'year');

CREATE TABLE pub (
   pub_id integer PRIMARY KEY,
   pub_date date NOT NULL,
   pub_date_prec date_prec NOT NULL
);

然后你可以这样查询表:

SELECT pub_id, date_trunc(pub_date_prec::text, pub_date)::date FROM pub;

忽略 pub_date 中的任何“随机”日期和月份值。

关于postgresql - 如何在 postgres 中存储不同精度的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39368430/

相关文章:

java - PgJDBC : "no suitable driver found" when following tutorial, 为什么?

linux - 获取 find 命令以在 GMT 中显示日期

Java 格式 yyyy-MM-dd'T'HH :mm:ss. SSSz 转 yyyy-mm-dd HH:mm:ss

string - 使用 Postgresql 将字符串转换为 Double

Postgresql:无法在控制台通过 psql 连接到默认本地主机

ruby-on-rails - 使用 Elasticsearch 和 Rails 分析模型数据的相似性

sql - 设置日期 SQL Oracle

.net - 是否有.NET方式来存储类似于自定义类的时间段?

php - 如何在php中设置DateInterval?

sql - Postgres LIMIT/OFFSET 奇怪的行为