Mysql选择当月有生日的用户
我在数据库中的varchar列中存储了这样的生日 年月日 如何直接从MySQL查询中选择当月的生日人 并显示如何使用PHPMysql选择当月有生日的用户,mysql,Mysql,我在数据库中的varchar列中存储了这样的生日 年月日 如何直接从MySQL查询中选择当月的生日人 并显示如何使用PHP 谢谢首先,不要将日期存储为VARCHAR。到日期 修复后,请使用以下多种方法之一: 您应该将列类型更改为DATE。e、 g ALTER TABLE `people` CHANGE `dob` `dob` DATE NOT NULL; 这样,您就可以使用MySQL查询日期函数来过滤结果 SELECT * FROM people WHERE MONTH(dob) = MON
谢谢首先,不要将日期存储为
VARCHAR
。到日期
修复后,请使用以下多种方法之一:
您应该将列类型更改为
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())
由于使用了VARCHAR字段而不是日期字段 您必须强制转换该值,然后使用正常的日期函数。像
SELECT *
FROM table_name
WHERE MONTH(CAST(col_name AS DATE)) = MONTH(NOW());
假设日期存储为
%m/%d/%Y
此格式,您可以根据需要更改此格式
和%m
我们只选择月份,并将其与当前月份月份(NOW())
进行比较
用列替换DOB
,用表名替换table
select * from table
where date_format(str_to_date(DOB, '%m/%d/%Y'), '%m') = 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())
你能更改数据库吗?或者你做不到,现在你在寻找解决方案?有你需要的一切。请在继续之前花点时间在这些材料上检查我的答案可能对你有帮助
NOW()
是一个函数,不是常数。但它仍然是最好的answer@jaczes它确实回答了当前的问题。但最好的是有争议的。@PauloJoséOliveiraRosa也许,因为我的括号打字错误,它不起作用?让我知道你的桌子结构。必须工作。数据以dd/mm/yyyyy格式存储在varchar colmun中。转换帮助?检查链接或进行谷歌搜索。但是您需要添加一个新的date
列,将varchar
迁移到date
,然后删除旧的varchar
列。如果需要,请重命名新的date
列。只有当您希望某人出生在特定的年份和月份,而不仅仅是month@Garytje我将“当前月份”解释为我们当前所在的月份(指今年)
select * from table
where date_format(str_to_date(DOB, '%m/%d/%Y'), '%m') = MONTH(NOW());;
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/').'%';
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())