我目前正在一个网站上工作,需要在本周,本月和下个月使用MYSQL和PHP庆祝他们的生日。
我该怎么做?
答案 0 :(得分:4)
如果您在MySQL中以DATE(或DATETIME)格式存储生日,您可以使用以下查询:
// 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(birthdate)= MONTH(NOW())+ 1;
SELECT * FROM person WHERE IF
( MONTH( NOW() ) < 12, MONTH( birthdate ) = MONTH( NOW() ) + 1,
MONTH( birthdate ) = 1)
答案 1 :(得分:0)
SELECT *
FROM users
WHERE birthday + INTERVAL YEAR(CURRENT_DATE) - YEAR(birthday) YEAR BETWEEN CURRENT_DATE AND CURRENT_DATE + INTERVAL 3 DAY
请注意,这种情况不易受到影响,需要完整的独立扫描。
在SQL Server
,Oracle
和PostgreSQL
中,可以使用此方法进行改进:
,但MySQL
缺乏生成随机结果集的方法。
但是,您可以创建一个虚拟表,并在其中存储从1900
到2100
的年份。
添加cron任务以在2100
中更新它,因为您可以轻易忘记:)