2009-12-13 34 views
1

我正在研究一個需要將成員生日插入MySQL數據庫的項目。但我很困惑。其實我使用它像:在數據庫中記錄成員生日的正確方法是什麼?

INT(10)

所以我如更改格式「27/06/1960」使用PHP unix時間並使用函數date()來顯示生日。有沒有更好的解決方案?有沒有什麼好的資源可以推薦閱讀「DATE,DATETIME,TIMESTAMP」?

謝謝。

+0

謝謝你們,我要開始閱讀有關DATETIME因爲它在大項目中使用。 – MoeAmine 2009-12-13 14:16:49

+0

隨時接受答案,回答你的問題,並upvote那些你發現「輝煌」:) – cherouvim 2009-12-13 15:25:35

+0

@cherouvim 是的,當然可以。我接受了它,但我無法贊成它 - 「投票要求15聲望」 – MoeAmine 2009-12-14 04:29:31

回答

2

找出某人生日的最快方法是使用2或3個獨立的INT列,並可能添加一列以將整個事件存儲爲DATETIME。雖然你不正常使用整數也不多列表示日期,請記住,如果你在這個表有很多行,做這樣的事情

SELECT * FROM people WHERE birthday LIKE '%-12-24'; 

是不是很有效。它在較小的數據集中工作正常,但如果我們開始進入大型數據集(取決於您的硬件),則速度會變慢。有時你需要以不同尋常的方式存儲數據,以保證系統的高效性,通過多達4組日期列(月份,日期,年份以及將整件事物作爲日期戳存儲),您浪費的少量HD空間將帶來回報在速度。

這樣做,你可以簡單地做:

SELECT * FROM people WHERE birth_month=12 AND birth_day=24 
+0

輝煌的評論!謝謝。去年我使用它,但我認爲它不是專業的,但在閱讀你的解釋之後,我會認真思考它。 – MoeAmine 2009-12-13 15:02:37

9

我會從DATETIME manual page for your database開始。一般來說,如果一個數據庫有一個特定的列類型,專門爲您計劃在該列中存儲的數據類型而設計,那麼使用它通常是一個好主意。它不僅可以更準確地瞭解列中存儲的內容,還可以讓您編寫更強大的查詢,並讓數據庫引擎爲您優化這些查詢。

-1

沒有正確和沒有錯誤的決定。 只有一種你最喜歡的方式,這是正確的決定。

我真的可以說,沒關係如何設計你的數據庫和代碼,只要你按照自己的設計。 所以如果你使用特殊的日期模式,而不是通過代碼使用它,所以你不會與成千上萬的轉換器鬥爭。

例如, HTML表單模式:DD/MM/YYYY

PHP模式(exlpode( '/',$日期)): DD:MM:YYYY

DB模式:DD-MM-YYYY

+0

如何存儲數據可能會對數據庫的性能產生巨大影響,我不會同意沒有正確和錯誤的決定。在這種情況下@Dav有正確的答案 – Paul 2009-12-13 13:38:24

1

使用DATE列。 MySQL預計輸入爲「YYYY-MM-DD」並輸出這樣的值。

尚未(尚未)由用戶提供的日期可能被編碼爲NULL列。雖然你可能不需要「NULL」需要的額外位,但你甚至可以爲此寫入特殊值「0000-00-00」。

相關問題