formulaire de recherche par date ou intervalle de date

Retour

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

1)
dans le formulaire ":date"
dans la base "date"
matching exact

date = :date
  1. dans le formulaire ":date"
    dans la base : "start" et "end"
    date recherché incluse dans l'intervalle

    start <= :date and end >= :date

  2. 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)

  3. dans le formulaire ":start" et ":end"
    dans la base : "date"
    intervalle simple

    date >= :start and date <= :end

  4. 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

  5. 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) )
    )
    )
    )