我有一个面向人的大型历史数据集,其中包括以YYYY,YYYY-MM或YYYY-MM-DD格式记录的出生日期。我一直在想我应该为这个字段使用date []数组,因为数据集经常列出两个或更多的出生日期。
PG docs表示支持ISO 8601日期,ISO 8601(wikipedia link)适应精度降低,但PG不允许我添加精度降低的日期(如1882- 1882年11月11日。
那么,处理需要包含多个出生日期的记录的最佳方法是什么?这些记录可能看起来像1883年,1882年或1882年至12月12日?
答案 0 :(得分:0)
让我们假设你有一张表person
和
+----------------+---------+----------+--------------------------------+
| person_id | fname | lname | bdate[] |
+----------------+---------+----------+--------------------------------+
| 1 | 'Jhon' | 'Smith' | {1883, 1882-11, or 1882-12-12} |
+----------------+---------+----------+--------------------------------+
您不希望这样,因为很难搜索一个日期或更新数组。
相反,您需要一个附加表格birthdays
+-------------+------+------------+
| birthday_id | type | bdate |
+-------------+------+------------+
| 1 | 1 | 1883-01-01 |
| 1 | 2 | 1882-11-01 |
| 1 | 3 | 1882-12-12 |
+-------------+------+------------+
这种方式即使保存日期1883-01-01
,您也知道type = 1
或1883