MySQL基于时间选择WHERE



我有一个带有许多WHERE条件的查询,但其中一个条件需要是动态的。只有当实际时间在09:00到18:00之间时,我才需要应用一个WHERE。即:

SELECT x,y from z WHERE
x = 'hello'
{ if time between 09:00 and 18:00 then }
AND y = 'world'
{ end if }

如何应用这样一个where条件?

非常感谢Simon

您可以这样写条件:

SELECT x, y 
FROM z 
WHERE x = 'hello'
AND (time NOT BETWEEN '09:00' AND '18:00' OR y = 'world')

这样,条件y = 'world'将仅在time BETWEEN '09:00' AND '18:00'true的情况下影响结果。

您可以使用一个简单的HOUR(CURRENT_TIME())来提供当前小时数。

... WHERE HOUR(CURRENT_TIME()) > 9 AND HOUR(CURRENT_TIME()) < 18 ...