php – 仅知道年份的日期(例如1570-00-00)
我有一个数据库表,其中包含一个名为Born(type = date)的字段,其中包含人们的出生日期(例如1970-07-08).但是,对于生日不确切知道的人,我该怎么办?
例如,一个历史人物诞生于1570年.所以我把它放在我的数据库中:1570-00-00.但它显示在1569年11月30日. 这是我正在使用的代码,其中$Born是存储在数据库中的日期… $Born = $row['Born']; $Birth = DateTime::createFromFormat('Y-m-d',$Born); 我的问题应该在@ Storing a date where only the year may be known回答,但我很困惑.听起来有几种选择,我不确定哪种选择在我的情况下是最好的选择. 将月份和日期与年份分开似乎很简单.所以我有一个名为Year(type = year)的字段和另一个名为Date的字段,用于月份和日期.但是我可以将后者设置为“日期”字段并插入值01-01(1月1日),或者我是否必须插入完整日期(例如1570-01-01),然后单独插入年份年度领域? 换句话说,这里有两种方法可以将1970年4月5日的日期存储在数据库表中: 年|日期 如果我要将日期放在两个单独的字段中,那么第一种方法可能是最简单的.或者有更好的方法吗? 以下是我如何存储仅包含一年的日期: 1988年| 1988-00-00 我的查询和显示脚本只是从Year字段中提取1988并忽略由双零(00)组成的每个值;换句话说,它将忽略第二个字段(日期). 我还考虑过将字段保持值从“年”改为“整数”多年,因为我在年龄较大时会出现“超出范围值”错误. 由于所有的困惑,我实际上想创建三个字段 – 年,月和日 – 并且只显示“普通英语”值,如下所示: 1970年|一月| 10 这会是一个好的解决方案,还是会遭受一些重大的性能损失? 解决方法
我会使用完整日期“1570-01-01”并在您不知道确切日期的情况下将布尔字段IsExactDate设置为False.实际上,我会在IsExactDate上添加一个默认值并将其设置为True.这样,您只需在添加非确切日期时明确地设置它.
您可以使用3个额外字段IsExactYear,IsExactMonth,IsExactDayDate进行更深入的操作,以便对有限精度的历史日期进行建模. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |