如果在MySQL中将birthdate存储为“Date”类型,那么您如何在PHP中确定它是否是特定用户的生日?
只是抓住生日列值,在-
上进行爆炸,然后检查日期和月份是否与PHP中的当前日期和月份相匹配?或者是否有一种更简单,更不粗暴的方式呢?
此外,您对今天过生日的SELECT
所有用户使用了什么查询?
答案 0 :(得分:16)
由于您需要排除年份,因此可以使用MONTH
和DAY
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())