2016-09-22 6 views
2

私はレポート関数を作成しようとしています。データベースに特定の値(closeDate)を持つデータを格納します。この値は7番目または21番目になります。 :私は何をしたいか2つの日付を比較する方法MySQL

Table Example

は、すべての22日は、22日(CURDATE)に=「アクティブ」または「オンは承認」とCloseDate <ステータスを持つすべてのレジスタを選択するためのクエリを実行しています。私はこのクエリを持っていますが、このクエリは画像にまったく同じように表示されています。私はId = 00001と00003のデータしか表示しないことを期待しています。Id 00002 CloseDate(2016-10-21)< 2016-09-22(カード状)。

SELECT tbl_usuarios.Correo, tbl_alertas.Id, tbl_alertas.Purpose, tbl_alertas.Status, tbl_alertas.OpenDate, tbl_alertas.CloseDate, tbl_alertas.Owner, tbl_alertas.ValueStream, tbl_alertas.Family 
FROM tbl_usuarios 
INNER JOIN tbl_alertas ON tbl_usuarios.Nombre = tbl_alertas.Owner 
WHERE STATUS = 'On approve' OR STATUS = 'Active' AND CloseDate < CURDATE() 

私は間違っていますか?

+4

WHERE (STATUS = 'On approve' OR STATUS = 'Active') AND CloseDate < CURDATE() 

それともINを使用して、これを簡素化することができますが.mysql.com/doc/refman/5.7/ja/operator-precedence.html)。あなたのクエリーは 'status = 'approve'または(status = 'active'およびclosedat

+0

Marc Bが言ったことに加えて、意図を明確にするために必要でない場合でも優先権を「強制」するのが一般的には良い習慣と見なされます。 – Uueerdo

答えて

1

WHERE条件で句を並べ替える必要があるかもしれません。それはORANDの両方を持っているので、期待どおりに解釈されない可能性があります。

私はこのような何かしようとするだろう:// DEV:あなたは[演算子の優先順位](HTTPについて学ぶ必要が

WHERE STATUS IN ('On approve', 'Active') AND CloseDate < CURDATE() 
+0

ありがとう、私はそれが()haha – User1899289003

0
SELECT tbl_usuarios.Correo, tbl_alertas.Id, tbl_alertas.Purpose, tbl_alertas.Status, tbl_alertas.OpenDate, tbl_alertas.CloseDate, tbl_alertas.Owner, tbl_alertas.ValueStream, tbl_alertas.Family 
FROM tbl_usuarios 
INNER JOIN tbl_alertas ON tbl_usuarios.Nombre = tbl_alertas.Owner 
WHERE (STATUS = 'On approve' OR STATUS = 'Active') AND DATE(CloseDate) < CURDATE() 
関連する問題