我正在开发一个基因学应用程序,我需要存储事件的日期。但是我需要能够支持大约日期和实际日期,所以我正在考虑使用 eventdate 和 ceventdate(用于大约)列,以便我可以在事件日期可用时对其进行索引。
然而,我想得越多,我就越想知道是否应该使用以下内容:eventyear、eventmonth、eventday、circa(定义),以便我可以存储分析 circa 的年份和月份。
想法?
我正在开发一个基因学应用程序,我需要存储事件的日期。但是我需要能够支持大约日期和实际日期,所以我正在考虑使用 eventdate 和 ceventdate(用于大约)列,以便我可以在事件日期可用时对其进行索引。
然而,我想得越多,我就越想知道是否应该使用以下内容:eventyear、eventmonth、eventday、circa(定义),以便我可以存储分析 circa 的年份和月份。
想法?
我使用GEDCOM的日期定义。我认为他们在考虑日期方面做得很好,包括大部分需要的东西。
我最近写了一篇关于 GEDCOM 日期的博文。我说的一些话是:
GEDCOM 中的基本日期是这样的:dd MMM yyyy,例如 02 JUL 1917。
关于该基本日期的一些知识:您可以列出“日月年”、“月年”或“仅年”。日期可以是 1 位或 2 位数字,因此允许 02 JUL 1917 或 2 JUL 1917。
对于大致日期,他们使用:
- ABT 日期
- 校准日期
- 美国东部标准时间
其中 ABT 的意思是“大约”并且是不准确的日期。CAL 以数学方式计算,例如从事件日期和年龄计算,而 EST 是基于使用其他事件日期的算法估计的。
还有许多其他结构,包括解释日期和日期短语。
由于您很可能希望您的家谱应用程序从 GEDCOM 导入并导出到 GEDCOM,因此您可能需要决定一些易于转换为 GEDCOM 格式/从 GEDCOM 格式转换的日期实现。
对于如何处理大约日期,这里还有几个未知数。大约日期可以是以下任何一种,可以是月或年的精度,也可以是给定的可变精度时间范围。
如果您只希望使用可以精确到月或年的大约日期,我会建议以下内容:event_date
在您正在跟踪的任何表(可能是一个events
表)中使用一个字段来表示确切的日期。对于大约日期,使用 anevent_date
但将month
or添加year
到accuracy
列。然后,您的系统只能将输入的日期设为该列中设置的准确度。如果您的日期需要是日期时间,那么accuracy
可以轻松扩展以将日期考虑在内。
如果您正在处理可以跨越两个精度的大约日期,我建议您使用以前的灵魂和几个额外的标准:如果events
表格假设成立,您将需要一个额外的表格来event_dates
使用日期列我之前讨论过。这个新表还需要一个date_type
代表事件大约日期的开始或结束的列。该event_dates
表将需要一个指向 的链接event_id
来维护关系。
或者,如果您的要求可以通过指定 abuffer_date
或来满足,您可以在同一个表中创建一个大约日期date_range
。该解决方案将采用输入的确切日期并使用逻辑来说明在指定的天数/月/年数内发生的任何日期都buffer_date
应该引发该事件。
希望有帮助。