Из документов ,
SUBTIME () возвращает значение expr1 - expr2, выраженное в том же значении
отформатировать как expr1. expr1 - выражение времени или даты и времени, а expr2 -
выражение времени.
(акцент мой)
Проблема в том, что 0:60
не является допустимым выражением времени:
mysql> select time('0:60');
+--------------+
| time('0:60') |
+--------------+
| NULL |
+--------------+
1 row in set, 1 warning (0.00 sec)
mysql> show warnings;
+---------+------+----------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '0:60' |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)
и вычитание возвращает NULL
:
mysql> select subtime(now(), '0:60');
+------------------------+
| subtime(now(), '0:60') |
+------------------------+
| NULL |
+------------------------+
1 row in set, 1 warning (0.00 sec)
mysql> show warnings;
+---------+------+----------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '0:60' |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)
NULL
s заставляет ваше сравнение возвращать false для каждой возможности, что приводит к 0 строкам в конечном результате.