database - 出生日期如 "YYYY-00-00"/"00/00/YYYY"

标签 database algorithm date formatting

在我的国家(法国),有些人的出生日期类似于 YYYY-00-00 (00/00/YYYY)。这是一个法律惯例(并用在身份证上),通常适用于不知道自己确切出生日期的移民。

当然这是数据库和算法的问题。

你遇到过这种情况吗?你如何解决?你会怎么选择?

最佳答案

您的问题有几种可能的解决方案,让我描述一下:

  1. 您的解决方案解决了问题,但产生了几个新问题。 Moo-Juice 指出了其中一个问题,但还有其他几个问题。例如,在应用程序级别处理这些日期将越来越困难,因为我相信您将在将这些值转换为日期时遇到问题。此外,难以阅读日期的月份和日期也不是一件好事。你将不得不处理成千上万的字符串解析,只是为了阅读这些日子。

  2. 您可以使用 3 列。一年一个,一个月一个,一天一个。如果日或月为 0,则我们谈论的是出生日期不确定的移民。

  3. 您还可以通过使用给定年份和默认月/日设置日期来解决应用程序级别的问题。当然,您必须明智地选择默认的月份和日期。最简单的是选择 1 月 1 日作为默认日期。但是,如果我是你,我会检查以下问题的答案:

If an immigrant was born in 2000 and his/her birth month and day is not known, then what will be the exact day according to the French legislation the given person will be considered and allowed to vote in 2018?

我会选择第三个选项,因为它简化了值的处理方式,保持了它的原子性,它的类型可以是日期。此外,如果您必须更改默认值,那么通过更改存储算法可以很简单地做到这一点。一个可能的问题是您必须更改默认日期并将其应用于已存储在数据库中的移民。为防止威胁您的应用程序的严重一致性问题,您可以在表中为 UnkownBirthDate 创建另一个列,这样在更改默认日期的情况下,您将知道应该从已存储的用户/人员中更改谁的日期。

干杯。

关于database - 出生日期如 "YYYY-00-00"/"00/00/YYYY",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21040463/

相关文章:

algorithm - 在 CSS Sprite 中自动定位图像的最佳(或至少足够好)算法是什么?

arrays - 配对操作的大 O 表示法

oracle - Oracle中没有时间的日期类型

php - MySQL 和 PHP 的日期范围

database - 一个很好的解决轻量级模式灵活问题的数据库系统

php - 查询数据库时出错-PHP,SQL和PHPMyAdmin

algorithm - 文本处理的形式化方法

javascript - Json - 日期未以正确的格式显示

database - SQL如何在一个命令中增加或减少一个int列

mysql - MySQL查询有问题