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

SQL Oracle Discussion :

Requête avec fonction addmonth [11g]


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2013
    Messages
    976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 976
    Par défaut Requête avec fonction addmonth
    bonjour,

    j'ai une requête qui utilise la fonction addmonth, afin de ne prendre tous les enregistrements des 3 derniers mois et je voudrais affiner ma sélection et je ne sais pas si c'est faisable.
    Je serais tenté de dire que oui, mais je n'ai pas trouvé le moyen de le faire.

    voici ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    select no,
    prenom,
    age,
    fonction
    ....
    from tablepersonne t1
    inner join tableContrat t2 on t2.id= t1.id
    where  t1.datecreation >=add_months(sysdate, -3 )
    ORDER BY t1.datecreation  DESC
    de cette manière là, si je génère ma requete aujourd'hui par exemple, le 14/04/2020, il me retourne tous les résultats de aujourd'hui depuis le 14/01/2020 , donc 3 mois en arrière.
    et je souhaiterais, si je lance ma requête aujourd'hui, qu'il me retourne les résultats depuis le 01/01/2020.

    pour info:
    j'ai créé une tache planifié qui se lance tous les 4 de chaque mois, pour cette requête, vous me direz tout simplement de changer les paramètres et de la lancer tous les 1er de chaque mois, mais ce n'est pas possible car d'autres traitements tourne et il a convenu de cette date tout simplement.

    Merci pour vos lumières

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    Bonjour,

    Si j'ai bien compris tu veux tronquer au 1er du mois ramené? Si c'est bien cela tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trunc(add_months(sysdate, -3 ), 'mm')

  3. #3
    Membre éprouvé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2013
    Messages
    976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 976
    Par défaut
    bonjour,

    initialement:
    si je joue la requête aujourd'hui, en l'état, elle me retourne les résultats à pile 3 mois en arrière et donc de aujourd'hui ( le 14 avril ) depuis le 14 janvier 2020 et donc ce que je souhaiterais c'est qu'il me retourne les résultats d'aujourd'hui et depuis le 01/janvier 2020, donc depuis le début d'il y a 3 mois en arrière, est ce que tu vois ou je veux en venir ?

    Edit:
    je viens de comprendre, je regarde ça

    merci à toi

  4. #4
    Membre éprouvé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2013
    Messages
    976
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 976
    Par défaut
    j'ai réussi à faire ce que je souhaitais, j'ai procédé comme suivant ::
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where t1.datemodification between add_months( trunc(sysdate, 'MM'), -1 ) and LAST_day(add_months( trunc(sysdate, 'MM'), -1 ))
    comme ça je retourne la liste des personne du mois précédent, exemple :
    si je lance la requête aujourd'hui ( une fois par mois) , ça me prend en compte entre le 01/03/2020 et le 30/03/2020

    merci

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 175
    Par défaut
    Pour la borne supérieure si tu veux la fin du mois précédent tu peux simplement faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trunc(sysdate, 'mm') - 1

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] lenteur tableau croisé d'une requête avec fonction vba que faire ?
    Par rogerfon dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/07/2012, 21h42
  2. Requête avec fonction MAX
    Par theo99 dans le forum SQL
    Réponses: 2
    Dernier message: 16/12/2010, 15h38
  3. requête avec fonction logarithmique
    Par nefertari dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 25/07/2007, 14h39
  4. Requête avec fonction Sum
    Par freud dans le forum Bases de données
    Réponses: 3
    Dernier message: 12/02/2007, 13h32
  5. requête avec fonction week()
    Par Sebastien_INR59 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 27/06/2006, 18h05

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