Database design 如何储存完整日期&;Microsoft Access中同一字段中的仅年份日期?

Database design 如何储存完整日期&;Microsoft Access中同一字段中的仅年份日期?,database-design,Database Design,在我的数据库中,我有一个字段,有些记录有完整的日期,但有些记录只有一年。现在我把它定义为一个数字,这样我至少可以存储年份。有没有一种方法可以在字段中存储完整的日期呢?有几个选项,都有优点和缺点: 将日期拆分为其组件,并分别存储(月、日、年)。有点过度规范化,但会让您能够轻松比较年份 为缺少的值存储一个虚拟日期(作为日期)(例如,2015年1月1日仅用于2015年的日期)。您无法了解日期何时缺少年份,但它会为您提供一个正确类型的列。您可能希望添加一个附加列(数据输入人员看不见),该列标记仅年份日期

在我的数据库中,我有一个字段,有些记录有完整的日期,但有些记录只有一年。现在我把它定义为一个数字,这样我至少可以存储年份。有没有一种方法可以在字段中存储完整的日期呢?

有几个选项,都有优点和缺点:

  • 将日期拆分为其组件,并分别存储(月、日、年)。有点过度规范化,但会让您能够轻松比较年份

  • 为缺少的值存储一个虚拟日期(作为日期)(例如,2015年1月1日仅用于2015年的日期)。您无法了解日期何时缺少年份,但它会为您提供一个正确类型的列。您可能希望添加一个附加列(数据输入人员看不见),该列标记仅年份日期

  • 将日期存储为整数-2015表示年份,20150101表示年/月/日。在查询时会导致一些尴尬,因为您只需要验证完整日期而不是年份,但这是为单个列实现存储的最简单方法


  • 此问题属于SO或SuperUser。试图重载数据库中单个字段的用途通常不是一个好主意。@user61852或DBA.SE。不过请注意,一次只能在一个网站上发布。此外,我相信这个问题在任何网站上都是一个很好的问题。它应该有关于试图解决什么问题的信息(仅在同一字段中存储日期和年份是一个“我如何实现此解决方案”,这有可能是一个指定不当的XY问题).我同意只在一个网站上发布一个问题,因为它在这里&我不知道如何移动它,除非你们中有人能帮我移动它,否则它将留在这里。我明白,字段重载通常是个坏主意,你有什么建议吗?所讨论的领域是版权日期。有些有完整的日期&我想保留,但许多只有一年。你会怎么处理?谢谢