我有一个数据库表,其中包含一个名为Born(type = date)的字段,其中包含人们的出生日期(例如1970-07-08).但是,对于生日不确切知道的人,我该怎么办?
例如,一个历史人物诞生于1570年.所以我把它放在我的数据库中:1570-00-00.但它显示在1569年11月30日.
这是我正在使用的代码,其中$ Born是存储在数据库中的日期...
$Born = $row['Born'];
$Birth = DateTime::createFromFormat('Y-m-d', $Born);
Run Code Online (Sandbox Code Playgroud)
我的问题应该回答@ 存储一个日期,只有年份可能已知,但我很困惑.听起来有几种选择,我不确定哪种选择在我的情况下是最好的选择.
将月份和日期与年份分开似乎很简单.所以我有一个名为Year(type = year)的字段和另一个名为Date的字段,用于月份和日期.但是我可以将后者设置为"日期"字段并插入值01-01(1月1日),或者我是否必须插入完整日期(例如1570-01-01),然后单独插入年份年度领域?
换句话说,这里有两种方法可以将1970年4月5日的日期存储在数据库表中:
年| 1970年的日期| 04-05 1970 | 1970年4月5日
如果我要将日期放在两个单独的字段中,那么第一种方法可能是最简单的.或者有更好的方法吗?
以下是我如何存储仅包含一年的日期:
1988年| 1988-00-00
我的查询和显示脚本只是从Year字段中提取1988并忽略由双零(00)组成的每个值; 换句话说,它将忽略第二个字段(日期).
我还考虑过将字段保持值从"年"改为"整数"多年,因为我在年龄较大时会出现"超出范围值"错误.
由于所有的困惑,我实际上想创建三个字段 - 年,月和日 - 并且只显示"普通英语"值,如下所示:
1970年| 一月| 10
这会是一个好的解决方案,还是会遭受一些重大的性能损失?
我会使用完整日期" 1570-01-01"并IsExactDate在您不知道确切日期的情况下将布尔字段 设置为False.实际上,我会添加一个默认值IsExactDate 并将其设置为True.这样,您只需在添加非确切日期时明确地设置它.
你可以用类似3个额外的领域采取进一步IsExactYear,IsExactMonth,IsExactDayDate建模精度有限的历史日期.
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |