我正在 Postgres 中存储来自 PubMed 的期刊论文数据,我想存储论文的出版日期。但是,有时日期是 just a year (见PubDate
字段),有时是月和年,有时是日月年。
将这些数据存储在我的数据库中的明智方法是什么?
如果我使用 Postgres 日期字段,我显然还需要指定日期和月份,但在某些情况下我需要发明它们,而且我不喜欢丢失日期精度信息的想法.
为了我的目的,我认为我只需要年份,但我不知道对于所有可能的 future 目的来说都是如此。
也许我应该只为 day
、month
和 year
设置文本字段,然后我可以随时将它们转换为日期字段 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/