如何创建选择查询计算年龄'按用户的出生日期?

时间:2015-06-06 13:25:00

标签: php mysql select-query

我想制作一个选择查询,以便在最小和最大年龄之间搜索寻找人。这是搜索值来自我的搜索表单的方式。

Array
(
    [iam] => Man
    [seeking] => Woman
    [age_min] => 18
    [age_max] => 19
    [country_id] => 25
)

我已将这些值存储在两个mysql表中。一个是user,另一个是Countries。我的问题是用户表中没有用于存储用户年龄的列。年龄根据用户的出生日期计算,用户表有一列存储用户DOB。

我的users表格如下:

CREATE TABLE IF NOT EXISTS users (
    user_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    country_id SMALLINT UNSIGNED NOT NULL,
    username VARCHAR(20) NOT NULL, 
    email varchar(40) NOT NULL,
    first_name VARCHAR(30) DEFAULT NULL,
    sex ENUM('Male', 'Female') DEFAULT 'Male',
    dob VARCHAR(10) NOT NULL, 
    address VARCHAR(40) DEFAULT NULL,
    city VARCHAR(25) NOT NULL,
    last_login TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
    date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (user_id),
    UNIQUE (email), 
    UNIQUE (username)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

在国家/地区表格中,它有country_idcountry_name

因此。我能否知道有没有办法使用MySql SELECT查询来执行此操作。 希望有人可以帮助我。 谢谢。

1 个答案:

答案 0 :(得分:0)

TIMESTAMPDIFF会告诉你两个日期的区别,所以如果你通过dob和当前日期,基本上会让你年龄。

注意:确保清理输入。

$Query = "SELECT * FROM users 
WHERE 
    TIMESTAMPDIFF(YEAR, dob, CURDATE()) >= '{$_POST['age_min']}' AND 
    TIMESTAMPDIFF(YEAR, dob, CURDATE()) <= '{$_POST['age_max']}' AND 
    sex = '{$_POST['seeking']}' AND 
    country_id = '{$_POST['country_id']}'";