我有一個名爲Born(type = date)的字段的數據庫表,其中包含人們的出生日期(例如1970-07-08)。但我如何處理那些生日不明確的人呢?僅知道一年的日期(例如1570-00-00)
例如,一個歷史人物誕生於1570年。所以我把它放在我的數據庫中:1570-00-00。但它顯示11月30日1569
這是我使用的代碼,其中$出生是存儲在數據庫中的日期...
$Born = $row['Born'];
$Birth = DateTime::createFromFormat('Y-m-d', $Born);
我的問題應該回答@Storing a date where only the year may be known但我困惑。這聽起來像有幾種選擇,我不確定哪個是我的最佳選擇。
看起來好像將月份和日期從年份分開一樣簡單。所以我會有一個名爲Year(類型=年)的字段和另一個名爲Date的字段在月和日。但是,我可以將後者設置爲「日期」字段並插入01-01(1月1日)等值,還是必須插入完整日期(例如1570-01-01),然後將年份單獨插入年份字段?
換一種方式,這裏有我的日期1970年4月5日存儲在數據庫表兩種方式:
年|日期 1970 | 04-05 1970 | 1970-04-05
如果我打算把日期放在兩個單獨的字段中,那麼第一種方法可能是最簡單的。還是有更好的方法呢?
而這裏的我怎麼能存儲由僅一年的時間:
1988年| 1988-00-00
我的查詢和顯示腳本只會從年份字段中提取1988年並忽略每個由雙零(00)組成的值;換句話說,它會忽略第二個字段(日期)。
我也考慮過把年份從「年」換成「整數」的字段,因爲在過去幾年裏我得到了「超出範圍值」的錯誤。
因爲所有的困惑,實際上,我想創建三個領域 - 年,月,日 - 和只顯示這樣的「純英語」的價值觀,:
1970年|一月| 10
這是一個好的解決方案,還是我會受到一些重大的性能影響?
也許你可以有一個範圍。最早和最近的日期。在確切知道日期的出生的情況下,這些值將是相同的。 –
您可能不會遇到性能問題,但是您肯定會將所有需要按日期進行過濾,按日期進行過濾,按日期進行過濾或對日期進行其他任何有意義的查詢複雜化。 (根據你的數據庫管理系統的不同,你也可能會遇到性能問題,每當你詢問數據庫的時候,至少應該包含一個標籤,表明你正在使用哪個數據庫 - 一個正確的答案有時取決於這些信息。) –
好提示,肯;我應該說我正在使用PHP和MySQL。 –