因此,假设我的DoB是1975-04-28,存储在变量$dob
我想取出生于+/- 5岁的人,所以在1970-04-28和1980-04-28之间。
这是我到目前为止所得到的:
SELECT id, username FROM tusers
WHERE profile_picture IS NOT NULL
AND settings LIKE '1,%'
AND sex = :sex
AND last_visit BETWEEN CURDATE() - INTERVAL 21 DAY AND CURDATE()
谢谢
编辑:人们的DoB在数据库中存储为dob
列,格式如下:1989-06-30。
Edit2:我在查询中没有WHERE dob子句,因为到目前为止我尝试过的所有内容都失败了。
答案 0 :(得分:2)
WHERE dob BETWEEN ? - INTERVAL 5 YEAR AND ? + INTERVAL 5 YEAR
?
代表匿名占位符,在执行时使用$dob
变量进行参数化。鉴于您在其他地方使用了命名占位符(例如:sex
),您可能也希望在此使用命名占位符 - 但请记住,您不能多次使用相同的参数名称,因此您必须使用例如:dob1
和:dob2
。
答案 1 :(得分:0)
select * from tbl
where dob
between DATE_ADD(givendate,INTERVAL -5 YEAR)
and DATE_ADD(givendate,INTERVAL +5 YEAR)