我在MySql中执行此查询:
SELECT amount
FROM Prices
WHERE (item_id = 1246 AND
('2016-12-26' BETWEEN (effective_date AND COALESCE(end_date, NOW()))))
但由于某种原因,我得到一个语法错误,我不知道它在哪里。 错误是:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')) AND(item_id = 1419 AND ('2017-01-14' BETWEEN (effective_date AND COALESCE(end' at line 1
价格是这样的:
价格
id
item_id
effective_date
end_date
答案 0 :(得分:3)
我不认为BETWEEN
和该表达式的第一个词之间应该有括号。这样的事情应该有效:
SELECT amount
FROM Prices
WHERE item_id = 1246 AND
'2016-12-26' BETWEEN effective_date AND COALESCE(end_date, NOW())
这个问题是一个错字,但是这个答案可能对想要了解使用BETWEEN
的正确方法的人有用。
MySQL documentation for BETWEEN并未明确提及有关括号的任何内容,但似乎是根据给出的示例暗示这一点。
基于本地测试,BETWEEN
表达式中两个术语中的每一个的括号都可以,例如。
WHERE '2016-12-26' BETWEEN (effective_date) AND (COALESCE(end_date, NOW()))
但是,在整个子句周围加上括号会产生错误,这就是你正在做的事情:
WHERE '2016-12-26' BETWEEN (effective_date AND COALESCE(end_date, NOW()))