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 :

Afficher la date complète dans un dbms_output.put_line


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 412
    Points : 40
    Points
    40
    Par défaut Afficher la date complète dans un dbms_output.put_line
    Bonjour tout le monde,

    j'aimerai s'avoir comment afficher une date complète dans un "dbms_output.put_line" sous PLSQL

    j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select max(TO_DATE((trunc(date_dd)), 'DD/MM/YYYY HH:MI;SS PM') )INTO DATE_YMD 
     from Ma_table; 
    dbms_output.put_line (DATE_YMD )
    ça n'a pas marché, il affiche que la date (sans heure)

    merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Pourquoi tu utilises la fonction trunc?

    Est-ce que le SELECT suivant marche? Si oui, adapte le format pour avoir l'heure sur 12 heures et le libellé PM en plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select max(TO_CHAR(date_dd, 'DD/MM/YYYY HH24:MI:SS')) INTO DATE_YMD from Ma_table;
    Peut-être que le SELECT suivant est plus performant puisqu'on ne convertit que la date max.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select TO_CHAR(max(date_dd), 'DD/MM/YYYY HH24:MI:SS') INTO DATE_YMD from Ma_table;
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 412
    Points : 40
    Points
    40
    Par défaut marche pas
    ça n'a pas marché pour les deux codes malheureusement, avec le message :

    "le modèle du format de date se termine avant la conversion de la chaine d'entrée entière"

  4. #4
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Comment est déclarée ta variable date ?
    Il faut que cela soit du VARCHAR2 (suffisamment long pour contenir les caractères)
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  5. #5
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    On peut avoir le type des variables date_dd et DATE_YMD et leur longueur si ce sont des chars?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  6. #6
    McM
    McM est déconnecté
    Expert éminent

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select max(TO_DATE((trunc(date_dd)), 'DD/MM/YYYY HH:MI;SS PM') )INTO DATE_YMD 
    dbms_output.put_line (DATE_YMD )
    Aïe Aïe Aïe, ce code !

    4 règles simples à appliquer sur les dates :
    1/ Une chaine de caractère est une chaine de caractère, une date est une date.
    2/ Toujours utiliser les formats
    3/ Toujours utiliser TO_DATE sur une chaine de caractère (type VARCHAR) et jamais sur une date (type DATE).
    4/ Toujours utiliser TO_CHAR avec format pour transformer une date (type DATE) en chaine de caractère (type VARCHAR) pour l'afficher.

    Dans ton code :
    TRUNC(date_dd) .. va renvoyer un type DATE
    TO_DATE(trunc(date_dd)...) !! Pas bon, c'est un to_char qu'il faudrait utiliser, ou carrément pas de TO_DATE.. c'est déjà une date

    Attention au max() si tu passes en chaine de caractère ('01/01/2017' < '31/12/2000')

    dbms_output.put_line (DATE_YMD ) .. Si date_ymd est une DATE, mettre un To_CHAR avec format.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 412
    Points : 40
    Points
    40
    Par défaut Marche toujours pas !!
    ça marche toujours pas, j'ai essayer toutes les méthodes !!!


    le problème quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select max(date_dd) from ma_table
    il affiche :

    19/03/18 11:11:52,359000

    mais quand je mets la requête dans une procédure où je dois déclarer une variable, il m'affiche que la date sans heure et minutes...

    Help!

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 412
    Points : 40
    Points
    40
    Par défaut J'ai reglé le problème
    ENFIN j'ARRIVE A LE FAIRE MERCI à TOUS


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    MAXX varchar(100);
    .
    .
     
    begin
    .
    . 
    select max(date_dd) INTO MAXX from ma_table; 
    dbms_output.put_line ('DATE :  ' ||MAXX||' ');

  9. #9
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Ah oui, on est passé de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select max(TO_DATE((trunc(date_dd)), 'DD/MM/YYYY HH:MI;SS PM') )
    à
    C'est quand même beaucoup plus simple
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  10. #10
    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
    Vous faites une conversion implicite entre votre colonne qui a l'air d'être une date - question à laquelle vous n'avez pas répondu malgré deux demandes - et la variable du PL/SQL.
    Bravo, vous avez codé un bug potentiel.
    Écrivez plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    declare
        v$_maxx varchar2(22);
     
    begin
        dbms_output.enable;
     
        select to_char(max(date_dd), 'dd/mm/yyyy hh24:mi:ss') -- vous pouvez ici contrôler votre format
          into v$_maxx
          from ma_table;
     
        dbms_output.put_line ('DATE : ' || v$_maxx);
    end;
    /

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

Discussions similaires

  1. afficher une date vide dans un état de sortie
    Par kroma23 dans le forum Bases de données
    Réponses: 4
    Dernier message: 25/11/2012, 18h26
  2. script pour afficher la date saisie dans un formulaire
    Par chidap dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 26/11/2011, 12h03
  3. afficher une date contenue dans une autre table..
    Par gide_x dans le forum Requêtes
    Réponses: 0
    Dernier message: 23/08/2008, 23h36
  4. Afficher une image complète dans un DBimage
    Par smail21 dans le forum Composants VCL
    Réponses: 14
    Dernier message: 30/10/2007, 12h13
  5. Afficher derniere date saisie dans etat
    Par lg022 dans le forum IHM
    Réponses: 4
    Dernier message: 10/03/2007, 12h43

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