2010-09-08 9 views
0

Dans l'exemple suivant, j'obtiens toutes les valeurs supérieures à '2009-11-29' ainsi que NULL et '0000-00-00'. Y a-t-il un autre moyen d'obtenir les mêmes résultats?Sélection des dates non valides

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) 
+1

Avez-vous essayé ou "OU"? – sheeks06

+0

Pouvez-vous clarifier votre question? Ce que vous voulez retourner 1) Dates invalides (zéro) et nulles? 2) Sélectionnez les dates 'correctes' supérieures à '2009-11-29' –

+0

Je cherchais "OU". Parfois, les choses sont si simples et devant vos yeux et vous ne les voyez toujours pas! – shantanuo

Répondre

0

Sélection dates non valides (zéro dates et null)

 select * from totest 
     where stime = '0000-00-00' 
     OR stime IS NULL 

Sélection uniquement des dates valides supérieures à '2009-11-29'

 select * from totest 
     where stime != '0000-00-00' 
     AND stime IS NULL 
     AND stime >= '2009-11-29' 
0

Pouvez-vous essayer?

select * 
from totest 
where 
    stime = '0000-00-00' 
    OR stime IS NULL 
    OR stime < '2009-11-29' 
Questions connexes