【问题标题】:get todays birth date from db从 db 获取今天的出生日期
【发布时间】:2018-02-20 07:51:34
【问题描述】:

我有 DOB 列,其中包含人员的 dob 并将其存储为 (y-m-d) 格式。我想知道获取今天出生日期的查询是什么。 我试过date(y-m-d),但它只显示今天的日期结果。 即,如果我的数据库中有2018-2-20 作为dob,那么它将显示在我的结果中,但如果有1995-2-20,则此日期不会显示为结果,所以基本上我只想显示今天是谁的生日。

【问题讨论】:

  • 列数据类型?
  • 日期是列的数据类型
  • 因此您只想比较日和月而不是年。这里已经回答了:stackoverflow.com/questions/24510108/…
  • 是的,我只想比较日期和月份,然后只有我会得到生日

标签: php mysql sql date datetime


【解决方案1】:

你可以这样试试

MySQL 查询:

SELECT * 
FROM
  YourTable
WHERE 
  DATE_FORMAT(BirthDayField,'%m-%d') = DATE_FORMAT(NOW(),'%m-%d')

此查询将您的 desired datecurrent date 转换为 m(month)-d(day) 格式并进行比较

注意:这里BirthDayField是数据类型为DATE的列名

关于 MySQL DATE_FORMAT 函数的详细信息

【讨论】:

    【解决方案2】:

    首先获取当前日期。

    $today = date("yyyy-mm-dd");
    

    然后在你说应该选择什么的地方初始化查询。

    $query = sprintf("SELECT * FROM bla WHERE `DOB` = %s", $today);
    

    【讨论】:

      【解决方案3】:

      我猜你尝试这样的事情,使用 case 语句来确定记录是否是当前生日

      select *,
          case when day( date( dob ) )=day( date( now() ) ) and month( date( dob ) )=month( date( now() ) ) then 1
          else 0
          end as 'birthday'
      from table
      

      【讨论】:

      • 这只会检查他们是否今天出生。
      【解决方案4】:

      你可以这样写

       SELECT * 
      FROM  persons 
      WHERE  DATE_ADD(birthday, 
                      INTERVAL YEAR(CURDATE())-YEAR(birthday)
                               + IF(DAYOFYEAR(CURDATE()) >= DAYOFYEAR(birthday),1,0)
                      YEAR)  
                  BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 0 DAY);
      

      我认为这将帮助您获得今天过生日的用户。

      【讨论】:

      • 这只会检查他们是否今天出生。
      • 我如前所述尝试过,但它给出了今天日期(包括当前年份)的结果,但我想要查询将选择
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多