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 :

Générer une date de début et une date de fin à partir d'un nombre


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 96
    Points : 40
    Points
    40
    Par défaut Générer une date de début et une date de fin à partir d'un nombre
    Bonjour,

    je souhaite générer une date_fin et date_debut d'un mois (format : dd/mm/yyyy) à partir d'un nombre.
    exemple
    j'ai le nombre 0508=>generation(fonctionn)=> date_debut='01/05/2008';date_fin='31/05/2008'
    je ne sais pas comment faire ,avez vous une idée sur comment faire ca ??

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Connecté à :
    Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.5.0 - Production
     
    SQL> set serveroutput on
    SQL> 
    SQL> DECLARE
      2    LC$DAte VARCHAR2(10) := '0508' ;
      3    LD$Deb DATE;
      4    LD$Fin DATE;
      5  BEGIN  
      6    LD$Deb := TO_DATE('01/' || SUBSTR(LC$Date,1,2) || '/20' || SUBSTR(LC$Date,3,2), 'DD/MM/YYYY'
    ) ;
      7    LD$Fin := LAST_DAY(LD$Deb);
      8    DBMS_OUTPUT.PUT_LINE('deb:' || TO_CHAR(LD$Deb,'DD/MM/YYYY')
      9                       || ' fin:'|| TO_CHAR(LD$Fin,'DD/MM/YYYY'));
     10  END; 
     11  
     12  /
    deb:01/05/2008 fin:31/05/2008
     
    Procédure PL/SQL terminée avec succès.
     
    SQL>
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 96
    Points : 40
    Points
    40
    Par défaut
    merci pour le code je vais essayé de l'integrer

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 96
    Points : 40
    Points
    40
    Par défaut
    ton idée est bonne j'ai essayé le code en créyant une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function function_name( param VARCHAR2)
     Return integer  IS
       dDeb DATE;
       dFin DATE; 
    BEGIN
      
       dDeb := TO_DATE('01/' || SUBSTR(param,1,2) || '/20' || SUBSTR(param ,3,2), 'DD/MM/YYYY') ;
       dFin := LAST_DAY(dDeb);
       
         return 0;
      exception
       when others then
      return -1;
    mais je dois appeler ma fonction en lui donnant un varchar et dois me retourner les deux valeurs dDeb ,dFin (au lieu de return 0),pour que je puisse les utilisées.
    comment je peux faire ca ??
    merci d'avance.

  5. #5
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Faire une procédure avec 2 variable s OUT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Create Procedure return_dates
    (
       p1   IN   Varchar2
      ,p2   OUT Date
      ,p3   OUT Date
    )
    Is
    ...
    End;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Declare
      dt1 date ;
      dt2 date ;
    Begin
      return_dates( '0508', dt1, dt2 ) ;
    End;
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 96
    Points : 40
    Points
    40
    Par défaut
    j'arrive pas à utiliser ma procedure return_dates dans mon code voici l'extrait de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function(param varchar2) is
    
    ici je dois mettre ma procedure return_dates :
    return_dates (param ,,); qui doit retourner date_fin et date_dabut pour les utiliser en bas
    
    
    select ......where date<=date_fin 
    .............
    insert into table(params,date_f,date_d)
    values(param,date_debut,date_fin)  --ici je dois inserer le param(0505) et les dates
    
    function (param,date_debut,date_fin) --ici je donne les 3 elements en entrée
    comment je peux utiliser ma procedure dans ce code
    désolé je ne suis pas habituer à travailler avec plsql.
    NB:j'ai créer ma procedure return_dates avec succes
    merci

  7. #7
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    D'abord il s'agit d'une procédure. De plus je vous donne l'appel de cette procédure dans mon exemple. Qu'est-ce qui vous manque ?
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  8. #8
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    create or replace procedure(param varchar2)
    Is
      LD$Deb DATE;
      LD$Fin DATE;
    BEGIN  
      LD$Deb := TO_DATE('01/' || SUBSTR(param,1,2) || '/20' || SUBSTR(Param,3,2), 'DD/MM/YYYY'
      LD$Fin := LAST_DAY(LD$Deb);
      DBMS_OUTPUT.PUT_LINE('deb:' || TO_CHAR(LD$Deb,'DD/MM/YYYY')
                        || ' fin:'|| TO_CHAR(LD$Fin,'DD/MM/YYYY'));
     
      insert into table(params,date_f,date_d)
      values(param,LD$Deb,LD$Fin);
     
    END;
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 96
    Points : 40
    Points
    40
    Par défaut
    merci pour votre aide

  10. #10
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 96
    Points : 40
    Points
    40
    Par défaut
    Bonjour,
    je donne à ma fonction la valeur au format :'200807',mais ca ne marche pas pour ce format il me génére l'erreur suivante:
    date format picture ends before converting entire input string

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function name_func(param varchar2)return integer is
    date_d date;  
    date_e date ;
    begin
     date_d:= TO_DATE('01/' || SUBSTR(param,5,2) || '/20' || SUBSTR(param,1,4), 'DD/MM/YYYY');
       date_e:= LAST_DAY(date_d );
     
       DBMS_OUTPUT.PUT_LINE('deb:'||date_d ||'fin:' ||date_e );
       return 0;
    end;
    c'est quoi l'erreur ?

  11. #11
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Et bien, dans mon exemple je place des / dans la date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date_d:= TO_DATE('01/' || SUBSTR(param,5,2) || '/20' || SUBSTR(param,1,4), 'DD/MM/YYYY');
    Si vous changez de format, adaptez le code en conséquence
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  12. #12
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 96
    Points : 40
    Points
    40
    Par défaut
    merci pour Votre aide

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

Discussions similaires

  1. Date de début d'une semaine
    Par Charly910 dans le forum Débuter
    Réponses: 3
    Dernier message: 16/12/2009, 19h06
  2. Gérer l'ensemble des dates entre une date de début et une date de fin
    Par shaun_the_sheep dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/04/2008, 11h13
  3. Réponses: 1
    Dernier message: 03/07/2007, 06h43
  4. Réponses: 1
    Dernier message: 18/08/2006, 10h01
  5. Comment obtenir la date de début d'une semaine ?
    Par Vodkha dans le forum Langage
    Réponses: 5
    Dernier message: 19/08/2005, 09h54

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