您的系统允许新用户注册并输入他们的婚礼日期。作为一个纯粹主义者,我想将其存储为日期。经过用户访谈后,很明显现实与这种方法不同。用户通常不确定日期或月份,并希望存储部分日期,例如“2009 年 6 月”或“2012 年的某个时间”。

有谁知道一个好的设计模式,允许存储部分日期,然后尝试为重要的一天创建时间线 - 即使输入了部分日期?

有帮助吗?

解决方案

也许是“模糊”的日期。如果他们说“2009年6月”,则可以存储为2009年6月15日,差异为+/- 15天。

“2010年某个时候”将于2010年7月1日,差异为180天。

所以存储日期和#天。

如果/如何在实践中发挥作用我不知道。只是一个想法。日期范围可能更容易实现。

其他提示

您可以将其存储为具有日期和日期之前列的范围。

您始终可以将日期存储在单独的列中:

  • 每月的某一天

让它们全部可以为空。您可以添加一个列来存储计算出的全职时间。对于该计算时间,您对所有为空的列使用一些默认值。

您可以将日期存储为 YYYYMMDD ,未知的月/日设置为0.例如, 20090200 将是“2009年2月的某一天”。这将使您可以相对轻松地进行排序和比较,如果您需要将其转换为日期,您可以在月份或日期添加1以获得更高级日期比较的近似值。

我有类似日期的问题;还有一些人还想说“6月15日”而没有指明年份。这是一个你必须处理的案例吗?

我将日,月和年存储在数据库中的三个单独的列中,每个列都可以为空,然后(稍微)重新发明了我的应用程序中的轮子(以及不允许某些情况,例如人们说“ 1974年第15号“)。

但是,当我将所有日期处理逻辑放在我的应用程序中时,我从未单独访问过三列。事后我希望我把它们放在一个列中,将部分日期保存为字符串(类似于“19740615”,“1974 ----”,“---- 0615”等),这样我的列杂乱就会减少。

我想这取决于你想在数据库中做多少以及你想在应用程序中做多少。无论哪种方式,我认为你会发明一种略有不同形状的轮子。但是,当然,你已经足够好,可以制作一些整洁,封装,可重复使用的课程 - 这将使它变得有趣! : - )

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top