我正在努力解决这个问题,但我无法做到这一点。
这是我的问题:
SELECT *
FROM `users`
WHERE (
fname LIKE '%Toms%'
OR lname LIKE '%Toms%'
)
AND (
bDate <1991 /12 /03
AND regDate >2000 /12 /03
AND lastActivity >2000 /12 /03
)
LIMIT 0 , 30
我想要的是为用户提供名字或姓氏'Toms',他们出生于1991年之前,但在2000年之后注册。我得到的只是所有用户名为'Toms',就像没有第二部分到查询!
我在这里缺少什么?
答案 0 :(得分:1)
SELECT *
FROM `users`
WHERE ( fname LIKE '%Toms%'
OR lname LIKE '%Toms%')
AND (bDate < '1991-12-03'
AND regDate > '2000-12-03'
AND lastActivity > '2000-12-03')
LIMIT 0, 30
您的列bDate,regDate和lastActivity应为DATE类型。 否则,如果是日期时间类型
SELECT *
FROM `users`
WHERE ( fname LIKE '%Toms%'
OR lname LIKE '%Toms%')
AND (DATE(bDate) < '1991-12-03'
AND DATE(regDate) > '2000-12-03'
AND DATE(lastActivity) > '2000-12-03')
LIMIT 0, 30
答案 1 :(得分:1)
您的日期格式错误,不会用引号括起来。尝试:
SELECT *
FROM `users`
WHERE (
fname LIKE '%Toms%'
OR lname LIKE '%Toms%'
)
AND (
bDate < "1991-12-03"
AND regDate > "2000-12-03"
AND lastActivity > "2000-12-03"
)
LIMIT 0 , 30