IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

afficher les dates comprisent entre deux dates


Sujet :

Langage SQL

  1. #1
    Membre actif Avatar de hugobob
    Profil pro
    FOI
    Inscrit en
    Septembre 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Gabon

    Informations professionnelles :
    Activité : FOI

    Informations forums :
    Inscription : Septembre 2005
    Messages : 169
    Points : 203
    Points
    203
    Par défaut afficher les dates comprisent entre deux dates
    Slt !
    j'ai une table presence

    PRESENCE(ID,AGENT,DATE_DEBUT,DATE_FIN)
    avec les donnees
    ID AGENT DATE_DEBUT DATE_FIN
    ------------------------------------------------------
    1 JEAN 01-09-2006 04-09-2006
    2 PAUL 03-09-2006 06-09-2006
    3 JEAN 06-09-2006 08-09-2006



    Je voudrais faire une requete qui m'affiche la liste de presence du genre:

    AGENT DATE
    -------------------------
    JEAN 01-09-2006
    JEAN 02-09-2006
    JEAN 03-09-2006
    JEAN 04-09-2006
    PAUL 03-09-2006
    PAUL 04-09-2006
    PAUL 05-09-2006
    PAUL 06-09-2006
    JEAN 06-09-2006
    JEAN 07-09-2006
    JEAN 08-09-2006


    Bref une requete qui liste les dates comprisent dans l'interval
    merci

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Salut,

    pour le SQL, dure de faire des jointures avec une table qui n'existe pas ... le mieux pour toi serait donc de rajouter une table de "date" contenant toutes les dates que tu souhaite gérer.

    Je te conseille au passage la lecture d'un article intéressant : Le temps, sa mesure, ses calculs

    Dans tous les cas, une recherche sur le forum devrait te donner des résultats, ce sujet a été traité plusieurs fois déjà

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 238
    Points : 125
    Points
    125
    Par défaut
    Voici une petite astuce pour ne pas créer de table intermédiaire,
    je sais, ce n'est pas "très très beau", mais ça peut toujours servir.
    PRE : dans ce cas j'ai indiqué comme date de départ le 01 janvier 2006 sur une période de 365 jours
    --> Donc pour que ceci fonctionne, il faut un minimum 365 engts dans l'objet "all_objects" (qusai tj le cas !)
    NB : si la période est > 1an,et pour ne pas dépasser 365 jours dans le rownum(sécurité)
    --> il est préférable de faire dans la vue "V_LES_DATES" des "union"

    --
    -- vue V_365_JOURS
    --

    create or replace view odi.V_LES_DATES
    (jour)
    as select to_date('01-01-2006','DD-MM-YYYY')+rownum from all_objects where rownum <=365
    --union select to_date('01-01-2007','DD-MM-YYYY')+rownum from all_objects where rownum <=365-- exemple su + de 365 j
    /

    --
    -- vue odi.V_AGENT_DATE
    --

    create or replace view odi.V_AGENT_DATE
    (id,agent,jour_present)
    as SELECT
    P.ID,
    P.AGENT,
    L.jour
    FROM ODI.PRESENCE P,odi.V_LES_DATES L
    where (P.DATE_DEBUT<=L.jour and L.jour<=P.DATE_FIN)
    order by
    P.ID,
    P.AGENT,
    L.jour
    /

    --
    -- dans la table
    --

    1 JEAN : 01-09-2006 --> 04-09-2006
    2 PAUL : 03-09-2006 --> 06-09-2006
    3 JEAN : 06-09-2006 --> 08-09-2006

    --
    -- résultats
    --

    select * from odi.V_AGENT_DATE

    ID AGENT JOUR_PRESENT
    -------------------------
    1 JEAN 01-SEP-06
    1 JEAN 02-SEP-06
    1 JEAN 03-SEP-06
    1 JEAN 04-SEP-06
    2 PAUL 03-SEP-06
    2 PAUL 04-SEP-06
    2 PAUL 05-SEP-06
    2 PAUL 06-SEP-06
    3 JEAN 06-SEP-06
    3 JEAN 07-SEP-06
    3 JEAN 08-SEP-06

    Lediz

Discussions similaires

  1. [XL-2013] Calcul de dates comprises entre deux dates
    Par Goemanne dans le forum Excel
    Réponses: 2
    Dernier message: 12/03/2015, 13h10
  2. [phpMyAdmin] Comment vider une table entre deux dates ou entre deux id avec phpMyAdmin
    Par patrmich dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 24/05/2014, 14h48
  3. Date comprise entre deux autres dates
    Par Jean_guy dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 06/05/2008, 14h00
  4. [PL/SQL] Date comprise entre deux mois
    Par geos25 dans le forum SQL
    Réponses: 1
    Dernier message: 15/01/2008, 11h19
  5. chercher toutes les entrées comprise entre deux dates
    Par kabool dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 15/03/2006, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo