假设我的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。
编辑2:我在查询中没有 WHERE dob 子句,因为到目前为止我尝试的所有方法都失败了。
WHERE dob BETWEEN ? - INTERVAL 5 YEAR AND ? + INTERVAL 5 YEAR
?
表示匿名占位符,在执行时使用 $dob
变量进行参数化。 鉴于您使用的是命名占位符(例如 :sex
) 在其他地方,您可能也希望在此处使用命名占位符 - 但请记住,您不能多次使用相同的参数名称,因此您必须使用 例如 :dob1
和:dob2
.
select * from tbl
where dob
between DATE_ADD(givendate,INTERVAL -5 YEAR)
and DATE_ADD(givendate,INTERVAL +5 YEAR)