Problème :
On crée un formulaire pour filtrer une table de la base de donnée.
voici les cas selon le nombre de champs
dans le formulaire ":date"
dans la base "date"
matching exact
date = :date
dans le formulaire ":date"
dans la base : "start" et "end"
date recherché incluse dans l'intervalle
start <= :date and end >= :date
dans le formulaire ":date"
dans la base : "start" et "end" nullable
date recherché incluse dans l'intervalle
start <= :date and (end >= :date or end is null)
dans le formulaire ":start" et ":end"
dans la base : "date"
intervalle simple
date >= :start and date <= :end
dans le formulaire ":start" et ":end"
dans la base : "start" et "end"
on souhaite obtenir les resultats qui sont à cheval ou inclu ou englobant les dates choisies.
start <= :end and end >= :start
dans le formulaire ":start" et ":end" nullable
dans la base : "start" et "end" nullable
on souhaite obtenir les resultats qui sont à cheval ou inclu ou englobant les dates choisies.
( ( end IS NULL AND (date(:end) >= date(start) OR :end IS NULL) ) OR ( end IS NOT NULL AND ( ( :end IS NOT NULL AND (date(:start) <= date(end) AND date(:end) >= date(start)) ) OR ( :end IS NULL AND date(:start) <= date(end) ) ) ) )