2016-09-23 1 views
0

나는 다음과 같은 쿼리가 :선택 따라 CURDATE MySQL의

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 CloseDate < CURDATE() 

나는 다음과 같은 테이블이이 쿼리의 결과 : 괜찮아요

Result

다.

이제는 웹 사이트에서 해당 쿼리를 사용할 것이므로 매월 5 일에 매 19 분마다 실행될 JavaScript 함수를 만듭니다. 내 질문에 CURDATE (5 또는 19)에 따라 그의 CloseDate가 < = yyyy-mm-07 또는 CloseDate> = yyyy-mm-07 및 < = yyyy-mm-21 인 행만 선택하려면 어떻게해야합니까? :

curdate = yyyy-mm-05.
예상 결과 : 나는 또 다른 쿼리에 추가 된 시도 위하여 ID 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() 기능을 확인하지 마십시오.

는 제로 데이 일부가 범위 (1) (31), 또는 0과 같은 '0000-00-00'로 날짜 또는 '2008-00-00'에, 날짜의 월의 일을 반환 .

당신이 그것을 설명하지만, 여기에 우리가 즉 이동하기 어렵다이

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 (커다란)입니다. 내 쿼리는 CloseDate = 2016-09-07 인 행만 선택하지만 현재 쿼리는 둘 다 선택합니다. –

+0

그래서 달의 5 일이되면 모든 레코드를 닫음 <= 7로 선택하고 19 일에 닫음> = 7 및 닫음 <= 21 인 모든 레코드를 선택하려는 경우 – Allkin

+0

예, 그게 내가 원하는 것입니다 –