Как я получу дни рождения друзей, которые отмечают свой день рождения на этой неделе, в этом месяце и в следующем месяце, используя MYSQL и PHP?

В настоящее время я работаю на сайте, который должен получить дни рождения друзей, которые отмечают свой день рождения на этой неделе, в этом месяце и в следующем месяце, используя MYSQL и PHP.

Как я могу это сделать?

Если вы храните даты рождения в формате DATE (или DATETIME) в MySQL, вы можете использовать следующие Запросы:

// This week SELECT * FROM person WHERE WEEK( birthdate ) = WEEK( NOW() ) // This month SELECT * FROM person WHERE MONTH( birthdate ) = MONTH( NOW() ) // Next month 

SELECT * FROM person WHERE MONTH (дата рождения) = MONTH (NOW ()) + 1;

 SELECT * FROM person WHERE IF ( MONTH( NOW() ) < 12, MONTH( birthdate ) = MONTH( NOW() ) + 1, MONTH( birthdate ) = 1) 
 SELECT * FROM users WHERE birthday + INTERVAL YEAR(CURRENT_DATE) - YEAR(birthday) YEAR BETWEEN CURRENT_DATE AND CURRENT_DATE + INTERVAL 3 DAY 

Обратите внимание, что это условие не поддается движению и требует полного сканирования indes.

В SQL Server , Oracle и PostgreSQL это можно улучшить с помощью этого подхода:

  • Выбор дней рождения

, но MySQL не имеет возможности генерировать случайный набор результатов.

Однако вы можете создать фиктивную таблицу и хранить годы с 1900 по 2100 в ней.

Добавьте задачу cron, чтобы обновить ее в 2100 так как вы можете легко забыть 🙂