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 :

[forms 6i][8i] affecter SYSDATE AVEC les heures


Sujet :

Oracle

  1. #1
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut [forms 6i][8i] affecter SYSDATE AVEC les heures
    Bonjour tout le monde,

    Je développe sous forms 6i et je viens de constater un fait extrèmement surprenant.
    Lorsque j'affecte la valeur de SYSDATE à une quelconque colonne d'une de mes tables, les heures, minutes et secondes sont systématiquement à 0.

    Ex : dans forms sur le trigger KEY-COMMIT je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	:B1.ST_DATMOD := TO_DATE(SYSDATE, 'DD/MM/RRRR HH24:MI:SS');
    	MSG_BOX('MAJ de ST_DATMOD := ' || TO_CHAR(:B1.ST_DATMOD, 'DD/MM/RRRR HH24:MI:SS') );
    et les heures, minutes et secondes sont systématiquement à 00 (à l'affichage comme en base) que j'affecte :
    - SYSDATE,
    - TO_CHAR(SYSDATE, 'DD... HH24:MI:SS') ou encore
    - TO_CHAR(SYSDATE, 'DD... HH24:MI:SS')

    Dernière information qui a son importance, je n'ai précisé aucun masque de format sur les colonnes des blocs de données en question et j'ai utilisé le type DATE avec une profondeur de 20.
    D'ailleurs il est impossible de ne pas spécifier la profondeur d'une colonne de type DATE ; ce que l'on fait dans une instruction DML ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE MYTABLE (D DATE);
    Tout cela me paraît bizarre.
    Quel est votre avis ?

  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
    Dans Forms, si vous souhaitez les information concernant l'heure, utilisez un type item de DATETIME et non pas simplement DATE.

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par SheikYerbouti
    Dans Forms, si vous souhaitez les information concernant l'heure, utilisez un type item de DATETIME et non pas simplement DATE.
    Ah ben oui, la solution n'était pas compliqué (et elle marche bien sûr) mais je n'ai trouvé que peu de posts manipulant les dates sous forms avec les heures, minutes et secondes.

    Encore une dernière question avant que je parte pleurer chez moi : pourquoi ne peut-on pas forcer - pas de message d'erreur mais je ne récupère toujours pas les heures, minutes et secondes - un format avec un type DATETIME :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :B1.ST_DATMOD := TO_DATE(:B1.ST_DATMOD, 'DD/MM/RRRR HH24:MI:SS')
    Je sais bien que c'est se compliquer la vie mais j'ai été surpris de voir le résultat avec ce bout de code qui reste de mes manipulations précédentes.

  4. #4
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Mon intervention est peut-être un peu à côté de la problématique initiale, mais j'attire votre attention sur le fait que ce n'est peut-être pas sysdate que vous devriez utiliser.

    En effet, lorsqu'on développe une application, on ne maitrise pas tout le temps la base sur laquelle elle sera déployée. (donc cela siginifie d'une part qu'il faut paramétrer au maximum !)
    De plus, Oracle gère la question des fuseaux horaires (notion de TIME_ZONE ou TZ).

    Si ce que vous souhaitez avoir c'est l'heure du serveur, c'est SYSDATE que vous devez utiliser.
    Par contre, si ce que vous souhaitez avoir, c'est l'heure du fuseau horaire de l'utilisateur, c'est CURRENT_DATE que vous devez utiliser.

    Si vous ne paramétrez rien, vous aurez CURRENT_DATE = SYSDATE, donc aucune contrainte supplémentaire sur le dév. Par contre, que de temps gagné si votre base est déplacée dans un autre fuseau horaire.....

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Ok et merci pour toutes ces explications mais j'ai cependant une question : CURRENT_DATE n'est-elle disponible en PL/SQL qu'après la 8i ou est-ce spécifique Forms ?
    Citation Envoyé par LeoAnderson
    Si vous ne paramétrez rien, vous aurez CURRENT_DATE = SYSDATE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    8i CYRIL> select sysdate from dual;
     
    SYSDATE
    --------
    14/02/06
     
    1 ligne sélectionnée.
     
    8i CYRIL> select current_date from dual;
    select current_date from dual
           *
    ERROR à la ligne 1 :
    ORA-00904: invalid column name
    [edit]
    CURRENT_DATE existe en 10g, donc j'en déduis, qu'en 8i, il faut obligatoirement utiliser SYSDATE.
    [/edit]

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Current_date est une nouveauté de la 9i .

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

Discussions similaires

  1. [WD18] Utilisation de Range Slider avec les Heures
    Par wd_newbie dans le forum WinDev
    Réponses: 3
    Dernier message: 17/01/2014, 15h45
  2. Sysdate sans les heures
    Par leroysomer dans le forum Oracle
    Réponses: 9
    Dernier message: 12/10/2012, 17h23
  3. Réponses: 1
    Dernier message: 18/08/2010, 08h09
  4. soucis avec les heures négatives
    Par facteur dans le forum Excel
    Réponses: 4
    Dernier message: 06/02/2009, 08h24
  5. Problème de calcul avec les heures
    Par smotte76 dans le forum Access
    Réponses: 12
    Dernier message: 28/04/2006, 20h21

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