I think the problem is that your CASE statement is evaluating to the number 1 instead of the string that you want for completing your WHERE condition. Look at this example:
mysql> select '07:20:00' AND '15:19:59' as shift;
+-------+
| shift |
+-------+
| 1 |
+-------+
See? The result is 1 instead of '07:20:00' AND '15:19:59'. Put double quotes around the result to get a string:
mysql> select "'07:20:00' AND '15:19:59'" as shift;
+---------------------------+
| shift |
+---------------------------+
| '07:20:00' AND '15:19:59' |
+---------------------------+