【发布时间】:2016-03-08 14:09:39
【问题描述】:
我有一个大型的以人为本的历史数据集,其中包括以 YYYY、YYYY-MM 或 YYYY-MM-DD 格式记录的出生日期。我一直在想我应该为这个字段使用一个 date[] 数组,因为数据集经常列出两个或多个出生日期。
PG docs 说支持 ISO 8601 日期,并且 ISO 8601 (wikipedia link) 适应降低的精度,但 PG 不允许我添加降低精度的日期(例如 1882 年 11 月的 1882-11)。
那么,处理需要包含多个出生日期(可能看起来像 1883、1882-11 或 1882-12-12)的记录的最佳方法是什么?
【问题讨论】:
-
如果我理解正确当你保存
1883postgres 保存1883-01-01? -
没有。它返回一个数据类型错误并且不插入任何内容。问题是(我认为)PG 不允许降低精度的 ISO 8601 日期,尽管我想证明是错误的:)
-
假设 Pg 不支持这个,这是一个非常糟糕的解决方法,但我会创建三个数组字段,一个 smallint 数组和两个日期数组,分别命名为 bday_year、bday_month、bday_date。这样,即使您在 bday_year 中看到 1997-05-01,您也知道它并不表示 5/1/1997,它仅表示 5/1997。我意识到这远非理想,但它会让你从 A 点到 B 点。
标签: postgresql date datetime