2010-06-10 6 views
0

pas en mesure d'exécuter une requête, je dois vérifier si la date de fin est supérieure à aujourd'hui dans la requête suivanterequête SQL ne pas exécuter

Obtenir une erreur requête non valide

select * from table1 where user in ('a') and END_DATE >'2010-05-22' 

obtenir une chaîne litres d'erreur ne correspond pas à

Répondre

1

plusieurs conditions sont reliées par AND ou OR, non multiple où est

select * 
    from table1 
where user in ('a') 
    AND END_DATE >'2010-05-22' 
3

Vous ne pouvez pas utiliser WHERE deux fois. Il devrait être

SELECT * FROM table1 WHERE user in ('a') AND END_DATE >'2010-05-22' 

Aussi, si vous voulez vérifier si END_DATE est supérieur à aujourd'hui il suffit d'utiliser

SELECT * FROM table1 WHERE user in ('a') AND END_DATE > CURDATE() 
+1

current_date est peut-être plus portable. – araqnid

+0

Araqnid a raison: CURDATE n'est pas une fonction générique. – APC

+0

@araqnid: vrai, de toute façon ça marche aussi dans MySQL – nico

2

Votre requête contient deux clauses WHERE, si vous avez besoin de combiner deux prédicats ou plus vous doit utiliser les combinateurs AND ou OR.

select * from table1 where user in ('a') and END_DATE >'2010-05-22' 
0

Votre clause where vérifie les points suivants:

user in ('a') 

est le même que

user = 'a' 

Vous devez ajouter des caractères génériques pour vérifier si un nom d'utilisateur contient un un, ou commence avec elle . Je pense que les caractères génériques dépendent de votre base de données (ne sait pas s'ils sont identiques partout)

Ce n'est pas directement votre question, juste pour éviter d'autres. Le paramètre curdate() s'applique uniquement au serveur SQL.

Questions connexes