Хранения даты рождения в mysql

Статус
В этой теме нельзя размещать новые ответы.

Juri

Мой дом здесь!
Заблокирован
Регистрация
5 Окт 2007
Сообщения
1.064
Реакции
200
  • Автор темы
  • Заблокирован
  • #1
В общем столкнулся с такой проблемой - не знаю как лучше хранить дату рождения юзверя в базе. Казалось бы ничего сложного, но если пользователь не указывает год рождения, а только месяц и день? Так же стоит задача как потом вытягивать тех людей у которых скажем день рождения должен быть в ближайшие 30 дней или 10?
Подскажите какой тип данных использовать и каким запросом потом можно вытянуть?
Заранее спасибо
 
даты рождения как date вроде хватает, а в запросе можно просматривать разницу между датами дня рождения и сегодня в днях, в этом году и в следующем
и фильтровать где разница от 0 до 30 дней
Код:
SELECT *,
DATEDIFF(CONCAT(YEAR(NOW()), '-', MONTH(birthday), '-', DAY(birthday)), NOW()) diff1,
DATEDIFF(CONCAT(YEAR(NOW())+1, '-', MONTH(birthday), '-', DAY(birthday)), NOW()) diff2
FROM birthday
HAVING (diff1>0 AND diff1<30) OR (diff2>0 AND diff2<30)
datediff возвращает разницу дат в днях, а с concat собираем день рождения для нужного года, так что год не нужен и может быть 0000,
а если не будет месяца или дня или обоих 0000-00-00 то DATEDIFF вернёт NULL

тут ещё интересные функции для работы с датами

как например to_days конвертирует всю дату в дни, тоже можно использовать.
 
  • Нравится
Реакции: Juri
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху