我的数据库设置包含用户信息,包括姓名,电子邮件,dob,性别,网站和其他信息。
我正在尝试为用户页面实现过滤结果选项。
问题是我不知道如何按年龄过滤,因为我将年龄值存储为出生日期,我有一个PHP函数来从中获取年龄,但我该怎么做呢。 / p>
过滤选项为年龄:12-24岁,25-32岁,33-56岁(以年为单位)
我该怎么做? select * from users where user.age <= 20 and >= 20
我甚至没有年龄栏,我只有出生日期。
过滤器存储在会话变量$_SESSION['age'] = 12-24
中如何从会话中获取第一个值(12)和最后一个值(24)以及稍后过滤,以便年龄应大于12且小于24
请帮帮我。
答案 0 :(得分:5)
SELECT * FROM table WHERE DATEDIFF(CURRENT_DATE, dob) >= (12 * 365.25) AND DATEDIFF(CURRENT_DATE, dob) <= (24 * 365.25)
答案 1 :(得分:0)
日历年龄: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分区并不一定是正确的。)
答案 2 :(得分:-1)
从现在开始减去生日,以获得年龄,然后进行比较。
使用select(而不是 text , value )的值作为数组中的查找,以获取年龄范围。
答案 3 :(得分:-1)
SELECT (FLOOR((CURDATE() - `birthfield`) / 10000)) as `age` FROM `tablename` WHERE `age` <= 20 AND ..
答案 4 :(得分:-1)
如果你想在diff变量中获得两个值,那么你应该尝试这个。
$sessArr = array();
$sessArr = explode('-',$_SESSION['age']);
现在在数组$sessArr
中,您在数组$sessArr[0] and $sessArr[1].
中同时拥有两个值
您可以尝试这可能对您有所帮助。
答案 5 :(得分:-1)
应该有用(尚未测试过)
$ _ SESSION ['age'] =“12-24”;
$ agroup1 = 分裂($ _ SESSION [ '年龄'], ' - ');
$ min = $ agroup1 [0]; $ max = $ agroup1 [1];
$ query =“select * from users where 年(dob)&lt; =年(curdate()) - 12和 年(dob)&gt; =年(curdate()) - 24“;