Bonjour à tous,
Je ne comprend pas comment les opérateurs de comparaison fonctionnent avec les champs de date.
Dans une interface web, je souhaite que l'utilisateur puisse exécuter une recherche sur des paiements en fonction de leur date; un premier menu déroulant permet de sélectionner un opérateur parmi = < <= > >= !=
3 autres menus permettent de choisir l'année, le mois, le jour, avec la possibilité d'insérer un blanc.
Les recherches se feraient donc selon des critères comme
= 2007 pour les paiements de toute une année
= 2007-12 pour ceux d'un mois
= 2007-12-01 pour ceux correspondants précisément à une date.
ce qui me semble assez intuitif pour l'utilisateur, mais pas transposable directement en une requête SQL.
En effet, je constate que
fonctionne de manière attendue avec les opérateurs = != < <= > >=, mais que
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT id FROM paiements WHERE date (opérateur) '2008-12-01'
ne renvoie rien avec =
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT id FROM paiements WHERE date (opérateur) '2007'
renvoie tout avec !=
renvoie tous les paiements jusque 2006 avec < et <=
renvoie les paiements de 2007 et 2008 avec > et >=
Le comportement est semblable pour une comparaison avec '2007-12'
Pourrait-on m'expliquer la logique de ce comportement ?
Merci d'avance,
G.
Partager