如果在MySQL中将birthdate存储为“Date”类型,那么您如何确定它今天是用户在PHP中的生日?

时间:2012-06-04 22:16:40

标签: php mysql sql date

如果在MySQL中将birthdate存储为“Date”类型,那么您如何在PHP中确定它是否是特定用户的生日?

只是抓住生日列值,在-上进行爆炸,然后检查日期和月份是否与PHP中的当前日期和月份相匹配?或者是否有一种更简单,更不粗暴的方式呢?

此外,您对今天过生日的SELECT 所有用户使用了什么查询?

7 个答案:

答案 0 :(得分:16)

由于您需要排除年份,因此可以使用MONTHDAY SQL函数,如下所示:

SELECT * FROM table WHERE MONTH(birthday) = MONTH(NOW()) AND DAY(birthday) = DAY(NOW());

不要忘记在此列上添加索引,否则会在数据增长时严重降低性能。

在PHP中,您只需使用date函数:

if (date('m-d', strtotime($row['date'])) == date('m-d'))
    //-- Today is my birthday! Hooray!

答案 1 :(得分:2)

使用MySQL的date functions从用户的出生日期中提取月和日,并将它们与从当前日期提取的相同值进行比较:

SELECT * FROM table WHERE
    DAY(birthday) = DAY(CURDATE()) AND
    MONTH(birthday) = MONTH(CURDATE());

无论年份如何,这都可以确保重要的值 - 月和日 - 匹配。希望有所帮助!

PS:您可能想要使用DAYOFYEAR作为更简单的版本。别。闰年会搞砸你。

编辑:在where子句中可以使用日期函数really slow you down,尤其是在大表中。请参阅下面的我的最后评论,了解更多内容。

答案 2 :(得分:1)

如果今天是他们的生日,您还可以添加到您的查询中以包含1的值。这使得在PHP中更容易,您不必进行比较。

SELECT
    user_table.*,
    (MONTH(user_table.birth_date_column) = MONTH(now()) 
        AND DAY(user_table.birth_date_column) = DAY(now())) as birthday_today
FROM user_table

其他答案显示查询以获取今天生日的用户

答案 3 :(得分:1)

查找生日与当前日期相同的月份和日期的人:

SELECT * from people 
WHERE month(birthDate) = month(curdate()) 
AND dayofmonth(birthDate) = dayofmonth(curdate())

答案 4 :(得分:0)

select * from table
where month(BirthDate) = month(curdate())
and day(BirthDate) = day(curdate());

答案 5 :(得分:0)

For Get User list whose birthday is today in mysql field datatype must be date 

$Toaday = '%'.date('m-d').'%';

$query = " select client_id,name,mobile_no from client where is_visible = 1 AND birth_date LIKE '$Toaday' ";

答案 6 :(得分:-1)

寻找员工'今天过生日。我们可以用这个

SELECT * 来自crm_employee 每月(dob)=月(CURDATE()) AND DAYOFMONTH(dob)= DAYOFMONTH(CURDATE())