2011-08-04 42 views
1

我想选择仅在将来显示但当前正在显示的节目。这必须是一个常见的请求,但我找不到任何有关帮助我解决此问题的信息。SQL选择将来的日期并且不会在此日期之前结束

我的表有日期列: - show_from - show_until

SELECT * FROM shows s 
     WHERE s.show_status = 'ENABLED' 
     AND s.show_from >= CURRENT_DATE() 
     ORDER BY s.show_from ASC 

这将选择显示在未来,但如果持续超过1天也不会被显示的节目。

回答

2
SELECT * FROM shows s 
WHERE s.show_status = 'ENABLED' 
AND 
(
    s.show_from >= CURRENT_DATE() 
    OR (s.show_from <= CURRENT_DATE() AND s.show_until >= CURRENT_DATE()) 
) 
ORDER BY s.show_from ASC 

要选择已经开始但尚未完成的节目。

0

这是行不通的吗?

SELECT * FROM shows s 
    WHERE s.show_status = 'ENABLED' 
    AND (s.show_from >= CURRENT_DATE() OR s.show_to >= CURRENT_DATE()) 
    ORDER BY s.show_from ASC 
1

试试这个:

SELECT * FROM shows s 
    WHERE s.show_status = 'ENABLED' 
    AND s.show_to >= CURRENT_DATE()) 
    ORDER BY s.show_from ASC 
相关问题