Я должен хранить в моей базе данных mysql, день рождения пользователей (например, 12-11-1990
).
Какой тип поля я должен использовать для его хранения?
Я должен хранить в моей базе данных mysql, день рождения пользователей (например, 12-11-1990
).
Какой тип поля я должен использовать для его хранения?
для хранения даты вы, вероятно, должны использовать дату. процитировать документацию:
Тип DATE используется для значений с частью даты, но без временной части.
Вы можете сохранить его как объект 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, чтобы вы могли строить дату без каких-либо маневров. Вы можете дополнительно индексировать каждое из трех полей (не уникальное), чтобы быстрее их извлекать.
"ДАТА" должна быть хорошей.
Тип DATE используется для значений с частью даты, но без временной части. MySQL извлекает и отображает значения DATE в формате "YYYY-MM-DD". Поддерживаемый диапазон - от "1000-01-01" до "9999-12-31".
Подробнее: http://dev.mysql.com/doc/refman/5.5/en/datetime.html
Вы должны сохранить дату как ДАТА.
И Locale как varchar (PHP или Java).
Не забывайте Locale :)
Ничто не похоже на получение электронной почты от чего-то вроде Weibo (китайский Twitter), когда еще не ваш день рождения.
ДАТА слишком очевидна?