В следующем примере я получаю все значения больше, чем "2009-11-29", а также NULL и "0000-00-00". Есть ли другой способ получить те же результаты?
mysql>select * from totest;
+---------------------+
| stime |
+---------------------+
| 0000-00-00 00:00:00 |
| 2009-12-12 12:22:32 |
| 0000-00-00 00:00:00 |
| 2009-01-12 12:22:32 |
| 0000-00-00 00:00:00 |
| NULL |
+---------------------+
6 rows in set (0.00 sec)
mysql>select * from totest where If(stime!='0000-00-00', stime >= '2009-11-29', 1);
+---------------------+
| stime |
+---------------------+
| 0000-00-00 00:00:00 |
| 2009-12-12 12:22:32 |
| 0000-00-00 00:00:00 |
| 0000-00-00 00:00:00 |
| NULL |
+---------------------+
5 rows in set (0.00 sec)
Выбор недопустимых дат (нулевые даты и нуль)
select * from totest
where stime = '0000-00-00'
OR stime IS NULL
Выбор только действительных дат больше, чем '2009-11-29'
select * from totest
where stime != '0000-00-00'
AND stime IS NULL
AND stime >= '2009-11-29'
Вы можете попробовать это?
select *
from totest
where
stime = '0000-00-00'
OR stime IS NULL
OR stime < '2009-11-29'