我已经在varchar列的数据库中存储了像这样的生日
DD / MM / YYYY
如何直接从mysql查询中选择当月的生日人?
使用php显示
由于
答案 0 :(得分:8)
SELECT
*
FROM
yourtable
WHERE
MONTH(STR_TO_DATE(yourdatefield, '%d/%m/%Y')) = MONTH(NOW())
答案 1 :(得分:7)
首先,不将日期存储为VARCHAR
。 Convert it到DATE
。
修复后,请使用众多MySQL date time functions中的一个:
SELECT * FROM users WHERE MONTH(birthday) = MONTH(NOW());
答案 2 :(得分:1)
您应该将列类型更改为DATE
。 e.g。
ALTER TABLE `people` CHANGE `dob` `dob` DATE NOT NULL;
通过这样做,您可以使用MySQL查询日期函数来过滤结果。
SELECT * FROM people WHERE MONTH(dob) = MONTH(CURDATE()) AND YEAR(dob) = YEAR(CURDATE())
答案 3 :(得分:1)
假设日期以%m/%d/%Y
格式存储,您可以根据需要更改此格式。
和%m
我们只选择月份并将其与当前月份MONTH(NOW())
进行比较。
将DOB
替换为您的列,将table
替换为您的表名
select * from table
where date_format(str_to_date(DOB, '%m/%d/%Y'), '%m') = MONTH(NOW());;
答案 4 :(得分:1)
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/').'%';
答案 5 :(得分:0)
当您使用 VARCHAR 字段而非 DATE 字段时,
您必须转换值,然后使用普通日期函数。像
SELECT *
FROM table_name
WHERE MONTH(CAST(col_name AS DATE)) = MONTH(NOW());
答案 6 :(得分:0)
我在表中存储了日期作为时间戳,所以我创建了这样的查询。而且工作正常。
请勿在日期中使用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())