如果生日在 MySQL 中存储为“日期”类型,您将如何确定它是否是 PHP 中特定用户今天的生日?
是否只是获取生日列值,在 上进行爆炸-
,然后检查日期和月份是否与 PHP 中的当前日期和月份匹配?或者有没有更简单、不那么粗暴的方法呢?
另外,对于今天生日的SELECT
所有用户,您会使用什么查询?
由于您需要排除年份,您可以使用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!
使用 MySQL 的日期函数从用户的出生日期中提取月份和日期,并将它们与从当前日期中提取的相同值进行比较:
SELECT * FROM table WHERE
DAY(birthday) = DAY(CURDATE()) AND
MONTH(birthday) = MONTH(CURDATE());
这样可以确保重要的值 - 月份和日期 - 匹配,无论年份如何。希望有帮助!
PS:您可能很想将其DAYOFYEAR
用作更简单的版本。不。闰年会把你搞砸的。
编辑:看起来在你的 where 子句中使用日期函数真的会减慢你的速度,尤其是在大表中。请参阅下面我的最后一条评论,以了解更多信息。
您还可以在查询中添加一个值,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
其他答案显示查询以获取今天生日的用户
查找生日与当前日期的月份和日期相同的人:
SELECT * from people
WHERE month(birthDate) = month(curdate())
AND dayofmonth(birthDate) = dayofmonth(curdate())
select * from table
where month(BirthDate) = month(curdate())
and day(BirthDate) = day(curdate());
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' ";
查找员工今天的生日。我们可以用这个
SELECT * FROM crm_employee WHERE MONTH( dob ) = MONTH( CURDATE( ) ) 和 DAYOFMONTH( dob ) = DAYOFMONTH( CURDATE( ) )