1

所以假设我的 DoB 是 1975-04-28,存储在变量中$dob

我想获取出生 +/- 5 岁的人,所以在 1970 年 4 月 28 日到 1980 年 4 月 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 子句,因为到目前为止我尝试的一切都失败了。

4

2 回答 2

2
WHERE dob BETWEEN ? - INTERVAL 5 YEAR AND ? + INTERVAL 5 YEAR

?s 代表匿名占位符,在执行时使用您的变量进行参数化$dob。鉴于您在:sex其他地方使用命名占位符(例如 ),您可能希望在此处也使用命名占位符 - 但请记住,您不能多次使用相同的参数名称,因此您必须使用 eg:dob1:dob2

于 2013-11-15T07:23:53.010 回答
0
select * from  tbl 
        where  dob 
        between  DATE_ADD(givendate,INTERVAL -5 YEAR) 
        and      DATE_ADD(givendate,INTERVAL +5 YEAR)
于 2013-11-15T07:29:28.573 回答