1

我正在开发一个基因学应用程序,我需要存储事件的日期。但是我需要能够支持大约日期和实际日期,所以我正在考虑使用 eventdate 和 ceventdate(用于大约)列,以便我可以在事件日期可用时对其进行索引。

然而,我想得越多,我就越想知道是否应该使用以下内容:eventyear、eventmonth、eventday、circa(定义),以便我可以存储分析 circa 的年份和月份。

想法?

4

2 回答 2

2

我使用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 格式转换的日期实现。

于 2012-03-28T00:57:40.970 回答
0

对于如何处理大约日期,这里还有几个未知数。大约日期可以是以下任何一种,可以是月或年的精度,也可以是给定的可变精度时间范围。

如果您只希望使用可以精确到月或年的大约日期,我会建议以下内容:event_date在您正在跟踪的任何表(可能是一个events表)中使用一个字段来表示确切的日期。对于大约日期,使用 anevent_date但将monthor添加yearaccuracy列。然后,您的系统只能将输入的日期设为该列中设置的准确度。如果您的日期需要是日期时间,那么accuracy可以轻松扩展以将日期考虑在内。

如果您正在处理可以跨越两个精度的大约日期,我建议您使用以前的灵魂和几个额外的标准:如果events表格假设成立,您将需要一个额外的表格来event_dates使用日期列我之前讨论过。这个新表还需要一个date_type代表事件大约日期的开始或结束的列。该event_dates表将需要一个指向 的链接event_id来维护关系。

或者,如果您的要求可以通过指定 abuffer_date或来满足,您可以在同一个表中创建一个大约日期date_range。该解决方案将采用输入的确切日期并使用逻辑来说明在指定的天数/月/年数内发生的任何日期都buffer_date应该引发该事件。

希望有帮助。

于 2012-03-26T21:00:44.957 回答