2016-09-23 12 views
0

を依存し、私は次のクエリを持っています。選択しCURDATE MySQLの

今、私のウェブサイトでこのクエリを使用するつもりで、私は毎月5月と19日に実行されるJavaScript関数を作成します。私の質問は、自分のCloseDateが< = yyyy-mm-07またはCloseDate> = yyyy-mm-07で、行番号が< = yyyy-mm-21(CURDATE(5または19) :

Curdate = yyyy-mm-05。
期待される結果:同上からのデータ00003

私が試したことは、このような何か別のものを追加し、クエリにした私の質問は、私はこれで説明させてあまり明確でない場合は、

AND CloseDate < CURDATE() AND CloseDate <= '2016-09-07' 

をcurdate = '2016-whatever-05、06'、07またはCloseDate '2016-09-21'を選択すると、CloseDate '2016-09-07'を選択します。curdate = '2016-whatever-19,20,21' 。

答えて

0

私が正しくあなたの問題を理解しているかどうかを知るが、 DAYOFMONTH()または単にDAY()機能をチェックしないでください。

31の範囲1に、日付の月の日を返し、またはゼロ日の部分を持っているような「0000-00-00」や「2008-00-00」のよう 日付の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 = 'En aprobacion' OR STATUS = 'Activa') 
    AND (CASE 
      WHEN DAY(CURDATE()) = '5' AND DATE(CloseDate) <= DATE_FORMAT(NOW() ,'%Y-%m-07') 
      THEN 1 
      WHEN DAY(CURDATE()) = '19' AND (DATE(CloseDate) >= DATE_FORMAT(NOW() ,'%Y-%m-07') AND DATE(CloseDate) <= DATE_FORMAT(NOW() ,'%Y-%m-21')) 
      THEN 1 
      ELSE 0 
      END) 
+0

のようにそれは説明するのは難しいのですが、ここで我々は、他の言葉で行くそれを使用することができます、あなたは19日第5回だけの日の私のクエリを実行しようとしていることを想像すると、年は関係ありません。今月の例は2016-09-05(curdate)です。私のクエリはCloseDate = 2016-09-07の行のみを選択したいが、現在のクエリは両方を選択したい。 –

+0

だから、月の5日目に、クローズド<= 7のすべてのレコードを選択したい場合、19番のときはクローズド> = 7、クローズド<= 21のすべてのレコードを選択したい場合 – Allkin

+0

はい、そうですよ –