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 :

PL/SQL dans APEX Probleme avec les Dates


Sujet :

PL/SQL Oracle

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Points : 197
    Points
    197
    Par défaut PL/SQL dans APEX Probleme avec les Dates
    Bonjour tous le monde

    Voici mon probleme :

    je cherche a vérifier que dans un formulaire , les dates saisie par l'utilisateur soient espacé de au moins 15 jours

    Par exemple lors de la validation par une fonction qui renvoi une valeur booléenne :
    date debu : 01-01-2011
    date fin : 01-05-2011

    un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return (:P712_ABO_FIN_DT - :P712_ABO_DEBUT_DT > 15);
    pourrait marcher mais mon problème c'est que mes date sont au format DDMMYYYY donc je ne peut pas faire de calcul avec se format

    Quel est la meilleur façon de procéder??

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Il suffit de convertir vos chaînes en dates :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_date(<votre_chaine>, 'DDMMYYYY')

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Points : 197
    Points
    197
    Par défaut
    je test sa dessuite merci beaucoup

  4. #4
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Points : 197
    Points
    197
    Par défaut
    sa ne marche pas du tout (snif)

    dans ma variable :P712_ABO_FIN_DT j'ai une date au format DDMMYYYY par exemple 18022010

    dans ma variable :P712_ABO_DEBUT_DT j'ai aussi une date au format DDMMYYYY par exemple 19012010

    si je demande :P712_ABO_FIN_DT > :P712_ABO_DEBUT_DT
    il me répond FALSE sniff (alors que février est bien supérieur a janvier)

    comment on peut faire pour passer au format YYYYMMDD qui lui me permet de faire mes calcul??

    ou sinon exist-il une fonction qui permet de calculer le nombre de jour en 2 date?? (cette solution serait tip top lol )

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2005
    Messages : 197
    Points : 591
    Points
    591
    Par défaut
    voir message en dessous
    Oracle DBA OCM 11g, 12c
    OCP 11g, 12c
    OCE RAC, SQL

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Citation Envoyé par teen6517 Voir le message
    sa ne marche pas du tout (snif)
    Si ça marche.

    Citation Envoyé par teen6517 Voir le message
    ou sinon exist-il une fonction qui permet de calculer le nombre de jour en 2 date?? (cette solution serait tip top lol)
    La fonction moins. Mais il faut d'abord convertir vos chaînes en dates.
    Cf. ma première réponse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select to_date('18022010', 'ddmmyyyy') - to_date('19012010', 'ddmmyyyy') as diff
      from dual;
     
          DIFF
    ----------
            30

  7. #7
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par teen6517 Voir le message
    ...dans ma variable P712_ABO_FIN_DT j'ai une date au format DDMMYYYY par exemple 18022010
    ...
    Non, dans votre variable P712_ABO_FIN_DT vous avez une chaine des caractères qui contient des numérique au format DDMMYYYY. D’où le besoin de transformer votre chaine des caractères dans un type de données date pour faire des calcules sur les dates.

  8. #8
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Points : 197
    Points
    197
    Par défaut
    je ne c'est pas pourquoi mais sa ne marcher pas
    il me disait que ce n'étais pas un format date valide puis se plaignais de pas pouvoir convertir en chaine de caractère .....

    j'ai fini par trouver dans une application démo un exemple de fonction booléenne sur lequelle j'ai pus y adapter vos idée (avec quelque modifs)

    et voici le résultat qui chez moi marche niquel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    declare
          interval number ;
    begin
    SELECT to_date (:P712_ABO_FIN_DT, 'dd/mm/yyyy') - to_date (:P712_ABO_DEBUT_DT, 'dd/mm/yyyy') into interval FROM dual;
    if interval >= 30 then 
        return true ;
    else
        return false ;
    end if ;
    end;
    Merci a tout le monde

  9. #9
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Avez vous remarqué que ça marche parce que votre chaîne des caractères est au format dd/mm/yyyy et non pas DDMMYYYY come vous l'avez dit ?

  10. #10
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Points : 197
    Points
    197
    Par défaut
    Enffet dans mon Élément de page (P712_ABO_DEBUT_DT) dans les paramètres, j'utilisai Masque de format : DDMMYYYY

    et pour que mon code marche je l'est modifier en :
    Masque de format : DD-MM-YYYY

    je ne comprend pas pourquoi je n'y arrivé pas avec vos codes hier soir et se matin ...

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

Discussions similaires

  1. probleme avec les dates dans une requete
    Par obydissonn dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 24/06/2008, 12h52
  2. [EJBQL] [EJB2] probleme avec les dates
    Par amine1980 dans le forum Java EE
    Réponses: 2
    Dernier message: 16/02/2007, 17h09
  3. [SQL Server 2000]Probleme avec les dates !
    Par ChristopheOce dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/10/2006, 15h58
  4. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  5. Grop probleme avec les date
    Par stinger000 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/04/2006, 13h49

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