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

Oracle Discussion :

"Best practice" pour des constantes dates min / date max


Sujet :

Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut "Best practice" pour des constantes dates min / date max
    Bonjour à tous,

    Je souhaite gérer sous Oracle 10g des valeurs "à date". Concrètement, je souhaite pouvoir définir des valeurs en fonction d'une plage horaire. Pour cela j'ai une table qui contient :
    - une date de début d'application
    - une date de fin d'application
    - des valeurs

    Mon idée est de gérer (via une application web) des enchainements chronologiques entre les enregistrement de cette table. En fait la date de début d'application est égale à la date de fin d'application + 1 de l'enregistrement précédent. Ainsi je peux ensuite effectuer des jointures sur cette table en indiquant que ma date doit être comprise entre les dates de début et de fin d'application de ma table de référence.

    Donc pas de soucis pour ce mécanisme sauf que je me pose la question des valeurs à utiliser pour la date de début de mon premier enregistement et pour la date de fin de mon dernier enregistrement.

    Plutot que de mettre des valeurs au pif (01/01/2000 et 01/01/2099 par exemple) je voulais savoir s'il y avait des sortes de dates "systèmes" mini et maxi ou des mots clés utilisables ou que sais je encore...

    J'espère n'avoir pas été trop confus. Merci de votre lecture et de vos réponses

  2. #2
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    J'utilise le même système. Personnellement la date min est la date à laquelle j'ai démarré le système (01/07/2006 dans mon cas) et la date max est la date de début de la dernière application + 1 an - 1 jour, ce qui oblige à recréer une entrée pour l'application à la date anniversaire, ce qui me satisfait pleinement.
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  3. #3
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    Nous gardions en fait des null pour la date min et max et nous fesions des nvl lors de l'intérrogation exemple
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    SQL>create table sygale_app(dat_deb date, dat_fin date, num_ver varchar2(5));
     
    Table créée.
     
    Ecoulé : 00 :00 :00.00
    SQL>insert into sygale_app values (null, to_date('15/09/2006','dd/mm/yyyy'), '1');
     
    1 ligne créée.
     
    Ecoulé : 00 :00 :00.00
    SQL>insert into sygale_app values (to_date('16/09/2006','dd/mm/yyyy'),to_date('20/09/2006','dd/mm/yy
    yy'), '2');
     
    1 ligne créée.
     
    Ecoulé : 00 :00 :00.00
    SQL>insert into sygale_app values (to_date('21/09/2006','dd/mm/yyyy'),null, '2.1');
     
    1 ligne créée.
     
    Ecoulé : 00 :00 :00.00
    SQL>select * from sygale_app;
    DAT_DEB  DAT_FIN  NUM_V
    -------- -------- -----
    ¤        15/09/06 1
    16/09/06 20/09/06 2
    21/09/06 ¤        2.1
     
    Ecoulé : 00 :00 :00.00
    SQL>select num_ver from sygale_app where to_date('01/01/2006','dd/mm/yyyy') 
      2             between nvl(dat_deb,to_date('01/01/2006','dd/mm/yyyy'))
      3       and nvl(dat_fin,to_date('01/01/2006','dd/mm/yyyy'));     
    NUM_V
    -----
    1
     
    Ecoulé : 00 :00 :00.00
    SQL>select num_ver from sygale_app where to_date('22/09/2006','dd/mm/yyyy') 
      2             between nvl(dat_deb,to_date('22/09/2006','dd/mm/yyyy'))
      3       and nvl(dat_fin,to_date('22/09/2006','dd/mm/yyyy'));
    NUM_V
    -----
    2.1
     
    Ecoulé : 00 :00 :00.00
    SQL>
    Donc si la date début ou fin est nulle, je la remplace par la date à vérifier.

  4. #4
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci à vous deux, apparemment je n'ai pas pris une mauvaise voie (je ne suis pas trèsà l'aise en SQL)

    J'aime beaucoup ta solution, en plus je ne connaissais pas la commande "nvl" qui me semble très utile. Juste une question : je dois me servir des jointures sur cette table pour un gros traitement, est ce que le "nvl" ne sera pas plus coûteux ?

  5. #5
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    Citation Envoyé par greygoda
    je dois me servir des jointures sur cette table pour un gros traitement, est ce que le "nvl" ne sera pas plus coûteux ?
    Faudrait faire le test, cela dépends de trop de chose...

Discussions similaires

  1. Best practices pour le backup des user profiles
    Par spynux dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 01/07/2008, 10h08
  2. [10g][Best Practice] Partitionnement pour archivage
    Par nuke_y dans le forum Oracle
    Réponses: 3
    Dernier message: 01/02/2007, 19h06
  3. Réponses: 11
    Dernier message: 16/06/2006, 13h46
  4. Boucle en Dos pour lister des fichiers selon une date
    Par Corben dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 17/12/2005, 12h17

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