返回varchar值和null值

时间:2014-04-14 04:38:03

标签: mysql null

我正在使用MySQL来尝试按日期排序事件,并按时间排序。然而,并非所有事件都具有设定时间,因此具有空值。我的问题是如何构建一个查询来检索包含时间字段(设置为varchar)和具有空值的事件的事件,同时删除时间已过的事件。到目前为止,这是我所拥有的,它只是返回所有事件。并且不会在事件通过时丢弃事件。

    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;

1 个答案:

答案 0 :(得分: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子句用于日期而第二个条件是设置时间或空时间,所以有助于使用括号,如:WHERE condition_a AND(condition_b OR condition_c)而不是WHERE condition_a AND condition_b OR condition_C产生的结果不一样。

但是拥有一些样本数据和预期结果真的很棒。