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

PL/SQL Oracle Discussion :

Récupérer le mois précédent en fonction d'une date


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut Récupérer le mois précédent en fonction d'une date
    Bonjour,

    J'aimerais mettre en place une requête permettant de me sortir la date de fin à -1mois par rapport à la date du jour

    J'arrive à faire ce que je veux avec dual
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select to_char(add_months(trunc(sysdate),-1),'DDMMYYYY')
    from dual;
    Mais je n'arrive pas à mettre en place dans ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select a.nom, b.prenom, b.datdeb, b.datfin
    from table1 a, table2
    where a.id=b.id
    and to_char(b.datfin,'DDMMYYYY') = to_char(add_months(trunc(sysdate),-1),'DDMMYYYY')
    Malheureusement cela ne fonctionne pas, je vous remercie par avance de votre aide.

  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,

    Ca devrait fonctionner, même si tu peux simplifier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select a.nom, b.prenom, b.datdeb, b.datfin
    from table1 a, table2
    where a.id=b.id
    and b.datfin = add_months(trunc(sysdate),-1)

  3. #3
    Membre confirmé
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut
    Bonjour vanagreg,

    Je n'ai rien du tout en retour de la requete malheureusement

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Il faut vérifier tes données car la requête est juste.

  5. #5
    Membre confirmé
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Octobre 2017
    Messages : 53
    Par défaut
    Bonjour McM,

    Justement je viens de vérifier mes données voici un exemple :
    ID NOM PRENOM DATEDEBUT DATEFIN
    210525 TOTO TITI 01/09/21 31/08/24

    Voici la requête sans la condition sur la date:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select a.nudoss,a.nom, a.prenom, b.datdeb, b.datfin
    from table1 a, table2 b
    where a.id=b.id
    and  b.datfin <> '31/12/2999' --est une date système, max
    AND a.nompat = 'TOTO
    '

    Malheureusement quand je rajoute la condition sur la date cela ne fonctionne plus, il me retourne une ligne blanche

  6. #6
    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
    C'est une fin de mois que tu cherches?
    Dans ce cas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select a.nom, b.prenom, b.datdeb, b.datfin
    from table1 a, table2
    where a.id=b.id
    and b.datfin = trunc(sysdate, 'MM') - 1
    Un conseil, écrit tes valeurs de date explicitement:

    to_date('31/12/2999', 'dd/mm/yyyy') et non pas '31/12/2999'

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/07/2021, 10h56
  2. [11g] Récupérer le mois précédent Oracle
    Par android59 dans le forum SQL
    Réponses: 9
    Dernier message: 22/01/2019, 09h14
  3. Réponses: 5
    Dernier message: 18/10/2011, 15h51
  4. Aidez moi, j'y arrive pas!
    Par Poulain dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 23/05/2007, 18h58
  5. Réponses: 4
    Dernier message: 12/04/2006, 20h25

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