我已将这样的生日存储在数据库中的 varchar 列中
日/月/年
如何直接从 MySQL 查询中选择当月的生日人?
并使用 PHP 显示
谢谢
SELECT
*
FROM
yourtable
WHERE
MONTH(STR_TO_DATE(yourdatefield, '%d/%m/%Y')) = MONTH(NOW())
First, do not store dates as a VARCHAR
. Convert it to a DATE
.
Once that's fixed, use one of the many MySQL date time functions:
SELECT * FROM users WHERE MONTH(birthday) = MONTH(NOW());
假设日期以%m/%d/%Y
这种格式存储,您可以根据需要更改此格式。
%m
我们只选择月份并将其与当前月份进行比较MONTH(NOW())
。
替换DOB
为您的列和table
表名
select * from table
where date_format(str_to_date(DOB, '%m/%d/%Y'), '%m') = MONTH(NOW());;
您应该将列类型更改为DATE
. 例如
ALTER TABLE `people` CHANGE `dob` `dob` DATE NOT NULL;
通过这样做,您可以使用 MySQL 查询日期函数来过滤结果。
SELECT * FROM people WHERE MONTH(dob) = MONTH(CURDATE()) AND YEAR(dob) = YEAR(CURDATE())
For Get User list whose birthday in current month in mysql if field datatype is date
$Toaday = '%'.date('-m-').'%';
$query = " select * from client where birth_date LIKE '$Toaday' ";
In your case declare $Today = '%'.date('/m/').'%';
当您使用VARCHAR字段而不是DATE字段时,
您必须转换值,然后使用正常的日期函数。喜欢
SELECT *
FROM table_name
WHERE MONTH(CAST(col_name AS DATE)) = MONTH(NOW());
我将日期存储为表中的时间戳,因此我创建了这样的查询。它工作正常。
不要使用 varchar 作为日期。
select first_name, last_name, date_format(FROM_UNIXTIME(`dateofbirth`), '%m/%d/%Y') as dob from users where date_format(FROM_UNIXTIME(`dateofbirth`), '%m') = MONTH(NOW())