Какое лучшее поле для хранения дня рождения?

Я должен хранить в моей базе данных mysql, день рождения пользователей (например, 12-11-1990).

Какой тип поля я должен использовать для его хранения?

Ответ 1

для хранения даты вы, вероятно, должны использовать дату. процитировать документацию:

Тип DATE используется для значений с частью даты, но без временной части.

Ответ 2

Вы можете сохранить его как объект DATE как обычно, с не повторяющимися датами. Если вы используете MySQL (я считаю, что у других СУБД также есть функции для этого), вы можете получать дни рождения, используя функции MySQL, как описано здесь:

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

"ДАТА" должна быть хорошей.

Тип DATE используется для значений с частью даты, но без временной части. MySQL извлекает и отображает значения DATE в формате "YYYY-MM-DD". Поддерживаемый диапазон - от "1000-01-01" до "9999-12-31".

Подробнее: http://dev.mysql.com/doc/refman/5.5/en/datetime.html

Ответ 4

Вы должны сохранить дату как ДАТА.

И Locale как varchar (PHP или Java).

Не забывайте Locale :)

Ничто не похоже на получение электронной почты от чего-то вроде Weibo (китайский Twitter), когда еще не ваш день рождения.

Ответ 5

ДАТА слишком очевидна?