27

我必须将用户的生日(如)存储在我的 mysql 数据库中12-11-1990

我必须使用什么字段类型来存储它?

4

5 回答 5

30

要存储日期,您可能应该使用 date。引用文档:

DATE 类型用于具有日期部分但没有时间部分的值。

于 2012-04-30T19:41:01.367 回答
14

您可以将其存储为一个DATE对象,就像您通常对非重复日期所做的那样。如果您使用的是 MySQL(我相信其他 DBMS 也有此功能),您可以使用 MySQL 函数检索生日,如下所述

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

在处理数千条记录时,此方法可能会有点慢。如果这是您的情况,您可以使用 3 个单独的 INT 存储生日,每个 INT(年、月、日)一个。然后你像这样搜索生日:

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

If you use this last method, I'd advise you to also store a DATETIME version of the birthday so that you can build the date without any kind of maneuvers. You can additionally index each one of the 3 fields (non-unique) so it's faster to retrieve them.

于 2012-04-30T19:51:59.787 回答
6

“日期”应该是好的。

DATE 类型用于具有日期部分但没有时间部分的值。MySQL 以 'YYYY-MM-DD' 格式检索和显示 DATE 值。支持的范围是“1000-01-01”到“9999-12-31”。

更多细节:http ://dev.mysql.com/doc/refman/5.5/en/datetime.html

于 2012-04-30T19:41:56.297 回答
5

您应该将日期存储为 DATE。

并且 Locale作为 varchar (PHPJava)。

不要忘记语言环境:)

没有什么比在你还没有生日的时候从微博(中文推特)之类的地方收到电子邮件更有趣的了。

于 2012-04-30T19:48:56.310 回答
1

DATE太明显了吗?

于 2012-04-30T19:41:26.497 回答