2011-03-14 99 views
0
一定年齡

的我有這樣的SQL statment:SQL只返回

SELECT * FROM users WHERE (DATE_FORMAT(dob, '%Y') - $strYear)<=3 

其中一期工程,有點兒,但如果DOB的一年多(後)超過$ strYear它出錯。

即。

strYear = 1960 
dob(Y) = 1930 

1930 - 1960 = -30其滿足<=3條件,但顯然是錯誤的,因爲我第3年範圍內尋找用戶。

任何想法?

+0

AND(DATE_FORMAT(dob,'%Y') - $ strYear)> 0 – iluxa 2011-03-14 19:23:33

回答

2

如何

SELECT * FROM users 
WHERE (DATE_FORMAT(dob, '%Y') - $strYear) <= 3 
AND (DATE_FORMAT(dob, '%Y') - $strYear) > 0 

可能的工作。

0

$ strYear好像PHP變量...

$query = "SELECT * FROM users 
      WHERE (DATE_FORMAT(dob, '%Y')-$strYear)<=3 
      AND (DATE_FORMAT(dob, '%Y')-$strYear) > 0" 

和差應大於0

+0

編號使用ABS在這裏沒有幫助。考慮DOB = 1930,strYear = 1932.你會得到一個不正確的結果返回與ABS(-2)<= 3。 – 2011-03-14 19:28:23

+0

赦免?你是否重複了我的陳述?是的,$ strYear是PHP。 – thebounder 2011-03-14 19:36:36

+0

@Joe - 你的權利我錯誤的解釋第二個條件> 0是必要的 - 固定的 – bensiu 2011-03-14 19:38:51