2012-05-06 15 views
0

我有一個MySQL表中的字段類型爲DATE用於存儲一些日期,我有另一個表中我有一個字段的類型SMALLINT只存儲一年。數據庫:如何存儲日期未知的日期還沒有發生的日期

現在我需要區分一個日期(或一年)還沒有發生的日期(或一年)。非常簡單,未知的值應該是NULL。但是有沒有建議使用什麼值來存儲尚未與我提到的類型發生的日期?

我很確定1000年前沒有日期/年數會被使用,所以我可以使用例如0000-01-01。有沒有更好的/推薦的解決方案?

編輯剛剛閱讀DATE鍵入「支持的範圍是'1000-01-01'到'9999-12-31'。」所以我將不得不使用1000-01-01而不是0000-01-01

+3

爲什麼不僅僅使用未來日期?像2020-05-02或其他什麼?或者我誤解了這個問題? – Corbin

+0

@Corbin是的,這是一種可能性;我可以使用例如'9999-12-31',但儘可能不像我的數據庫在幾千年內需要存儲任何數據,使用絕對不可能需要的日期似乎更清晰。我只是好奇,如果有任何推薦的方式來處理我的問題。 – lutogniew

+2

聽起來你應該在兩種情況下都使用null。這些日期到底是什麼?你的要求沒有多大意義。 「看起來更清潔...... 0的機會......」你是什麼意思?你應該使用null或實際日期? – Corbin

回答

2

聽起來好像您正在嘗試使用一列來存儲兩個單獨的數據位。無論某人是死還是活(實際上是一個狀態字段)以及他們死亡的日期都是單獨的信息位。因此,我建議你分開存儲它們。無論死亡日期是否已知,某人是否還活着或死亡,在任何情況下,死亡日期均爲NULL。我不會使用日期字段來確定它們是否已經死亡。因此,我會建議一個TINYINT(或BOOL)列來存儲它們是否存活以及它們的死亡日期是否爲可用NULL的DATE字段。

+0

最初我不願意嘗試這個想法,它可能會浪費太多的空間來存儲布爾在另外的領域;然而,快速計算表明,即使有數百萬條記錄,所需的額外空間也可以忽略不計。我必須考慮一段時間,考慮將來可能需要的查詢等等,最後我得出結論,這個解決方案對我來說是最好的。謝謝! – lutogniew

相關問題