2014-04-14 2 views
0

나는 MySQL을 사용하여 날짜별로 이벤트를 시도하고 정렬하고 시간순으로 정렬합니다. 모든 이벤트가 설정 시간을 가지고있는 것은 아니므로 Null 값을가집니다. 내 질문은 시간 필드 (varchar로 설정)와 null 값을 갖는 이벤트를 모두 검색하는 쿼리를 작성하는 방법입니다. 시간이 경과 한 이벤트는 삭제됩니다. 지금까지 이것은 내가 가지고있는 것인데 아직 모든 사건을 반환하고 있습니다. 그리고 그들이 지나갈 때 이벤트를 떨어 뜨리지 않습니다.varchar 값과 null 값 반환

SELECT `event_title` , DATE_FORMAT(event_date, '%Y-%b-%d') AS formated_event_date, event_date, event_hour 
    FROM `club_events` 
    WHERE `event_date` > CURDATE() -1 
    AND HOUR(CURTIME()) > `event_hour`OR HOUR(CURTIME()) > '' 
    AND club_id != '1' 
    ORDER BY `event_date` ASC 
    LIMIT 14; 
+0

'event_date'열의 데이터 유형은 무엇입니까? 아니면 열에서 일부 샘플 값을 게시 할 수 있습니까? –

답변

0

어쩌면 당신은 사용해야 좀 더 괄호 :

SELECT `event_title` , DATE_FORMAT(event_date, '%Y-%b-%d') AS formated_event_date, event_date, event_hour 
    FROM `club_events` 
    WHERE `event_date` > CURDATE() -1 
    AND (HOUR(CURTIME()) > `event_hour`OR HOUR(CURTIME()) > '') 
    AND club_id != '1' 
    ORDER BY `event_date` ASC 
    LIMIT 14; 

은 다음 추가 브래킷의 이유가 될 때 :

절은 날짜와 두 번째 조건에 간다 곳 중 하나입니다

이후 WHERE condition_a AND (condition_b OR condition_c) WHERE condition_a AND condition_b OR condition_C 대신에 같은 결과를 생성하는 WHERE condition_a AND (condition_b OR condition_c)와 같은 대괄호를 사용하면 도움이됩니다.

하지만 샘플 데이터와 기대되는 결과를 얻는 것이 좋습니다.

+0

WHERE 절이 날짜로 가고 두 번째 조건이 설정된 시간 또는 빈 시간이므로 WHERE condition_a AND (condition_b OR condition_c) 대신 WHERE condition_a AND condition_b OR condition_C와 같은 대괄호를 사용하면 도움이됩니다. 같은 결과. – Olli

+0

댓글을 통해 설명하는 것보다 답변에 추가하십시오. –