Mysql 关于使用where子句、日期间隔和'的混淆;和';和或';或';,应该快点
这是我正在构建的where子句。我对如何使用'or'和before now()和interval感到困惑。有人可以帮忙吗?这个问题与我搜索的其他问题稍有不同,因为在stackoverflow上有一个或另一个文档,但不同时处理这两个问题。介于Mysql 关于使用where子句、日期间隔和'的混淆;和';和或';或';,应该快点,mysql,date,where,Mysql,Date,Where,这是我正在构建的where子句。我对如何使用'or'和before now()和interval感到困惑。有人可以帮忙吗?这个问题与我搜索的其他问题稍有不同,因为在stackoverflow上有一个或另一个文档,但不同时处理这两个问题。介于之间的的操作数是有序的,因此第一个操作数需要小于第二个操作数。你的表情不是这样的。因此: SELECT * FROM romantic_dates WHERE asker = 'lover' AND date_start BETWEEN NOW() + INT
之间的的操作数是有序的,因此第一个操作数需要小于第二个操作数。你的表情不是这样的。因此:
SELECT *
FROM romantic_dates
WHERE
asker = 'lover' AND date_start BETWEEN NOW() + INTERVAL 90 DAY AND NOW() - INTERVAL 31 DAY
OR
giver = 'lover' AND date_start BETWEEN NOW() + INTERVAL 90 DAY AND NOW() - INTERVAL 31 DAY
ORDER BY date_start DESC;
我倾向于考虑日期表达式和使用:
SELECT rd.*
FROM romantic_dates rd
WHERE (asker = 'lover' AND date_start BETWEEN NOW() - INTERVAL 31 DAY AND NOW() + INTERVAL 90 DAY) OR
(giver = 'lover' AND date_start BETWEEN NOW() - INTERVAL 31 DAY AND NOW() + INTERVAL 90 DAY)
ORDER BY date_start DESC;
那么到底是什么问题呢?此查询是否产生错误?错误的结果?为了清楚起见,请使用(asker='lover'…31天)或(giver='lover'…31天)订单。你能详细说明一下什么是混淆吗?没有结果是问题所在,而数据库中有整个范围的条目,并且超出了该范围。
SELECT rd.*
FROM romantic_dates rd
WHERE date_start BETWEEN NOW() - INTERVAL 31 DAY AND NOW() + INTERVAL 90 DAY AND
'lover' in (asker, giver)
ORDER BY date_start DESC;