gpt4 book ai didi

php - 仅知道年份的日期(例如 1570-00-00)

转载 作者:可可西里 更新时间:2023-11-01 07:52:37 25 4
gpt4 key购买 nike

我有一个数据库表,其中包含一个名为出生(类型 = 日期)的字段,其中包含人们的出生日期(例如 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 日存储在数据库表中:

年份 |日期1970 | 04-051970 | 1970-04-05

如果我要将日期放在两个单独的字段中,那么第一种方法可能是最简单的。或者有更好的方法吗?

下面是我如何存储仅包含一年的日期:

1988 | 1988-00-00

我的查询和显示脚本只会从 Year 字段中提取 1988 并忽略每个由双零 (00) 组成的值;换句话说,它会忽略第二个字段(日期)。

我还考虑过将年份的字段保持值从“年”更改为“整数”,因为我在较早的年份出现“值超出范围”错误。

由于所有的困惑,我实际上正在考虑创建三个字段 - 年、月和日 - 并且只显示“简单的英语”值,如下所示:

1970 |一月 | 10

这是一个不错的解决方案,还是我会遭受一些重大的性能影响?

最佳答案

我会使用完整日期“1570-01-01”并添加一个 bool 字段 IsExactDate在您不知道确切日期的情况下设置为 False。事实上,我会在 IsExactDate 上添加一个默认值并将其设置为 True .这样你只需要在添加一个不准确的日期时明确地设置它。

您可以使用 3 个额外字段来更进一步 IsExactYear , IsExactMonth , IsExactDayDate用于对精度有限的历史日期进行建模。

关于php - 仅知道年份的日期(例如 1570-00-00),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21198705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com