-1

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

日/月/年

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

并使用 PHP 显示

谢谢

4

7 回答 7

9
SELECT
    *
FROM
    yourtable
WHERE
    MONTH(STR_TO_DATE(yourdatefield, '%d/%m/%Y')) = MONTH(NOW())
于 2013-07-26T11:21:36.900 回答
9

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());
于 2013-07-26T11:21:50.277 回答
2

假设日期以%m/%d/%Y这种格式存储,您可以根据需要更改此格式。

%m我们只选择月份并将其与当前月份进行比较MONTH(NOW())

替换DOB为您的列和table表名

select * from table
  where date_format(str_to_date(DOB, '%m/%d/%Y'), '%m') = MONTH(NOW());; 
于 2013-07-26T11:33:20.093 回答
1

您应该将列类型更改为DATE. 例如

ALTER TABLE `people` CHANGE  `dob` `dob` DATE NOT NULL;

通过这样做,您可以使用 MySQL 查询日期函数来过滤结果。

SELECT * FROM people WHERE MONTH(dob) = MONTH(CURDATE()) AND YEAR(dob) = YEAR(CURDATE())
于 2013-07-26T11:23:06.373 回答
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/').'%';
于 2016-08-02T10:49:47.437 回答
0

当您使用VARCHAR字段而不是DATE字段时,

您必须转换值,然后使用正常的日期函数。喜欢

SELECT * 
   FROM table_name 
   WHERE MONTH(CAST(col_name AS DATE)) = MONTH(NOW());
于 2013-07-26T11:24:05.960 回答
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())
于 2020-01-02T07:42:59.890 回答