2012-04-30 35 views
14

我必須在我的mysql數據庫中存儲用戶的生日(如12-11-1990)。什麼是最好的場地來存儲生日?

我必須使用哪種字段類型來存儲它?

+3

你的意思是什麼字段類型'日期' – mgraph

+0

日期會做到這一點:) –

+1

我個人喜歡時間戳,但你應該與oezi的答案一起去,MYSQL日期是官方的路要走。 –

回答

16

要存儲一個日期,你應該可能是use a date。引用文檔:

DATE類型用於具有日期部分但沒有時間部分的值。

0

DATE太明顯了嗎?

+8

不需要ornery ....(我沒有downvote ...) –

+1

好奇的人們如何解釋這一點。我實際上把它看作是「這不是你想要的日期,因爲它看起來很明顯嗎?」。那是@Jason可能對他的回答有懷疑。結果+1讓我有疑問。 –

3

「DATE」應該很好。

DATE類型用於具有日期部分但沒有時間部分的值。 MySQL以'YYYY-MM-DD'格式檢索並顯示DATE值。 支持的範圍是'1000-01-01'到'9999-12-31'。

更多細節:http://dev.mysql.com/doc/refman/5.5/en/datetime.html

3

,可以儲存日期爲DATE。

而區域設置作爲varchar(PHPJava)。

不要忘了地點:)

沒有像類似微博(Twitter的中國)收到一個電子郵件時,它不是你的生日呢。

10

您可以像存儲非重複日期那樣將其存儲爲DATE對象。的,如果你使用MySQL(我相信其他DBMS也有此功能),你可以檢索使用MySQL功能生日描述here

SELECT * 
FROM table_name 
WHERE 
    MONTH(date_field) = desired_month AND 
    DAY(date_field) = desired_day 

這種方法可以與成千上萬的記錄打交道時有點慢。如果這是你的情況,你可以用3個獨立的INT來存儲生日,每個(年,月,日)一個。然後,你搜索的生日是這樣的:

SELECT * 
FROM table_name 
WHERE 
    month_field = desired_month AND 
    day_field = desired_day 

如果使用此最後一個方法,我建議你還可以存儲生日的DATETIME版本,這樣就可以建立之日起,沒有任何形式演習。您還可以對3個字段中的每一個(非唯一)進行索引,以便更快地檢索它們。

+2

包括2月29日生日在非閏年。 –

相關問題