2017-01-24 17 views
0

私は、MySQLでこのクエリを実行しています:SQL構文エラー

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 

価格はこのようなものです:私はBETWEENとその式の第一項の間に括弧があるはずはないと思う 価格

id 
item_id 
effective_date 
end_date 
+0

全体エラー –

+0

を投稿し、あなたが得るエラーがあるください...? –

+0

*構文エラー*メッセージは何ですか? –

答えて

3

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式の2つの各項のまわりの括弧はOKです。

WHERE '2016-12-26' BETWEEN (effective_date) AND (COALESCE(end_date, NOW())) 

はしかし、全体の句の周りに括弧を置くことは、あなたが何をしていたかでエラーが発生:

WHERE '2016-12-26' BETWEEN (effective_date AND COALESCE(end_date, NOW())) 
+0

WHERE節を連結しても? –

+0

@ Ayoub.Aあなたが何を意味するのか分かりません。おそらくあなたの質問が別のユースケースであればそれを更新してください。 –

+0

それはちょうどうまく動作しない –