Mysql选择具有生日当月的用户

时间:2013-07-26 11:18:30

标签: mysql

我已经在varchar列的数据库中存储了像这样的生日

DD / MM / YYYY

如何直接从mysql查询中选择当月的生日人?

使用php显示

由于

7 个答案:

答案 0 :(得分:8)

SELECT
    *
FROM
    yourtable
WHERE
    MONTH(STR_TO_DATE(yourdatefield, '%d/%m/%Y')) = MONTH(NOW())

答案 1 :(得分:7)

首先,将日期存储为VARCHARConvert itDATE

修复后,请使用众多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())