【问题标题】:How to filter results based on age from MySQL database如何从 MySQL 数据库中根据年龄过滤结果
【发布时间】:2017-08-03 04:53:08
【问题描述】:

我有一个包含用户信息的数据库设置,包括姓名、电子邮件、出生日期、性别、网站和其他信息。

我正在尝试为用户页面实现过滤结果选项。

问题是我不知道如何按年龄过滤,因为我将年龄值存储为出生日期,我有一个 php 函数可以从中获取年龄,但是我该怎么做呢。

筛选选项是年龄:12-24、25-32、33-56(以年计)

我该怎么做? select * from users where user.age <= 20 and >= 20 我什至没有年龄列,我只有出生日期。

过滤器存储在会话变量$_SESSION['age'] = 12-24我如何从会话和以后的过滤器中获取第一个值(12)和最后一个值(24),以便年龄应该大于12并且小于24

请帮帮我。

【问题讨论】:

    标签: php mysql


    【解决方案1】:
    SELECT * FROM table WHERE DATEDIFF(CURRENT_DATE, dob) >= (12 * 365.25) AND DATEDIFF(CURRENT_DATE, dob) <= (24 * 365.25)
    

    【讨论】:

    • 完美运行,谢谢。 :)
    【解决方案2】:

    日历年龄:2016-02-28 出生的人在2017-02-27 上是 0 岁,2017-02-28 上是 1 岁。在2016-02-29 出生的人在2017-02-28 上是0 岁,在2017-03-01 上是1 岁。 (闰年)。

    MySQL 对此的表述是

       TIMESTAMPDIFF(YEAR, date_of_birth, current_date)
    

    它产生一个整数,并正确处理截断和闰年。 (经过天数的 365.25 划分不一定正确。)

    【讨论】:

      【解决方案3】:
      1. 从现在减去生日得到年龄,然后比较。

      2. 使用选择的值(不是文本)作为数组中的查找来获取年龄范围。

      【讨论】:

      • 这有点帮助,但你能以任何方式写出来并像 MySQL 语句一样显示吗?
      • 如果您在 Google 中输入“mysql 减去两个日期”,第一个结果将是 MySQL 手册页,其中包含用于执行此操作的函数以及许多其他有关日期的内容。
      【解决方案4】:

      如果你想在 diff 变量中获取两个值,那么你应该试试这个。

      $sessArr = array();
      $sessArr = explode('-',$_SESSION['age']);
      

      现在在数组 $sessArr 中,您在数组 $sessArr[0] and $sessArr[1]. 中都有两个值 你可以试试这个,它可能对你有帮助。

      【讨论】:

        【解决方案5】:

        应该可以工作(还没有测试过')

        $_SESSION['年龄'] = "12-24";

        $agroup1 = split($_SESSION['age'],'-');

        $min = $agroup1[0]; $最大 = $agroup1[1];

        $query = " select * from users where 年(dob) = 年(curdate()) - 24";

        【讨论】:

          【解决方案6】:
          SELECT (FLOOR((CURDATE() - `birthfield`) / 10000)) as `age` FROM `tablename` WHERE `age` <= 20 AND ..
          

          【讨论】:

          • 20101210 - 19760306 = 340904 .. 我只有 34 岁.. 不知道 datediff
          • 我不认为 MySQL 会将日期转换为整数并像那样减去它们,是吗?
          • 刚刚尝试过,它可以工作.. 但是:我需要除以 10000 blush
          猜你喜欢
          • 1970-01-01
          • 2021-12-07
          • 2019-01-31
          • 1970-01-01
          • 2014-11-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多