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

Sql Developer Oracle Discussion :

Erreur de conversion si date manquante


Sujet :

Sql Developer Oracle

  1. #1
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut Erreur de conversion si date manquante
    Bonjour,

    j'utilise SQL-Dev. 1.1.2.25 sur une base 10g.

    Mon souci est pour la conversion des dates julian en date en clair, toutes ne sont pas retournées. J'aimerai un avis de connaisseur sur ce sujet.

    Voici mon code pour la conversion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_date(PHDRQJ + 1900000, 'YYYYDDD') "GPHDRQJ",
    ce cas ci fonctionne mais sur certains champs identique au point de vue structure, j'ai le code d'erreur suivant :


    Je pense que cela est dû au fait qu'il n'y a pas toujours de date dans les champs.
    Etant assez novice dans ce domaine, j'aimerais au moins être éclairé sur les choix possible pour résoudre ce problème.

    Merci d'avance,


    ps:désolé pour la piètre qualité de l'image mais en même temps cela ne surcharge pas le forum et n'empêche pas la visibilité non plus.

  2. #2
    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
    Je pense que cela est dû au fait qu'il n'y a pas toujours de date dans les champs.
    Non car
    select to_date(null + 1900000, 'YYYYDDD') "GPHDRQJ" from dual
    donne
    null
    je pense plutot que la valeur contenue dans HDRQJ ne correspond pas a une date (du moins pas au format attendu par ORACLE).
    Essaye d'afficher la valeur de PHDRQJ pour que l'on voit ce qu'il y a dedans.
    Regarde aussi tes paramêtres NLS_DATE_LANGUAGE,NLS_DATE_FORMAT et NLS_TERRITORY

  3. #3
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    oui tu as raison, j'ai regardé et les valeurs contenues dans le champs "à problème" sont à "0" du coup 0 +1900000 = le jour zero de l'année 1900 et par conséquent il ne sait pas le retourner sous forme de date.

    Je pense que c'est ainsi qu'on pourrait l'interprêter ?

    Donc ma seconde question serait comment le forcer à ne convertir que les dates "valides" ? une condition ? mais je ne m'y connais pas encore assez pour le moment.

    Edit : Concernant mes paramètres NLS

    - Language : FRENCH
    - Territory : FRANCE
    - Date Format : DD-MON-RR HH24:MI:SS

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT (CASE
               WHEN PHDRQJ > 0
                  THEN TO_DATE (PHDRQJ + 1900000, 'YYYYDDD')
               ELSE NULL
            END
           ) "GPHDRQJ"
      FROM DUAL

  5. #5
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Super , merci pour ce code, je vais tenter de l'appliquer pour mes vues.

    Par contre je me rend compte que mon format de date est un peu étrange, je vais me renseigner mais si je peux modifier le format DD-MON-RR HH24:MI:SS par DD/MM/YYYY je pense que j'aurais là aussi fait un progrès enterme de lisibilité.
    Car je redescend les vues dans des bases access pour créer des stats et autres traitements et lorsque je n'ai pas de date il m'affiche l'heure sous cette forme : 00:00:00.

    Je poursuis mes investigations, en tout merci pour la condition, je vais déjà voir avec ça.

  6. #6
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Alors j'ai aussi modifié mon format de date dans SQL-DEV et à priori, cela convient parfaitement, donc je suis passé au format DD/MM/RRRR.

    Derniere question en ce qui concerne cette partie.

    Avec le code que tu m'as donné et dans l'hypothèse où j'ai plusieurs champs de ce type devrais-je faire un CASE à chaque fois ou y a t'il une methode plus simple pour les imbriquer ?

    Genre j'ai les champs SDADDJ; SDCNDJ; SDPPDJ; etc... pour lesquels j'ai les mêmes soucis, je dois faire tout ton code pour chaque champs ?

  7. #7
    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
    Citation Envoyé par Orakle Voir le message
    Avec le code que tu m'as donné et dans l'hypothèse où j'ai plusieurs champs de ce type devrais-je faire un CASE à chaque fois ou y a t'il une methode plus simple pour les imbriquer ?

    Genre j'ai les champs SDADDJ; SDCNDJ; SDPPDJ; etc... pour lesquels j'ai les mêmes soucis, je dois faire tout ton code pour chaque champs ?
    Tu pourrais faire 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
    15
    16
    17
     
    /* Formatted on 2007/08/29 11:13 (Formatter Plus v4.8.8) */
    CREATE OR REPLACE FUNCTION calcul_date (p_jours IN NUMBER)
       RETURN DATE
    IS
    BEGIN
       IF p_jours > 0
       THEN
          RETURN TO_DATE (p_jours + 1900000, 'YYYYDDD');
       END IF;
     
       RETURN NULL;
    EXCEPTION
       WHEN OTHERS
       THEN
          RETURN NULL;
    END calcul_date;
    Et l'appeler ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select calcul_date(SDADDJ), calcul_date( SDCNDJ) from ...

  8. #8
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Wooww alors là t'es un chef !

    merci beaucoup, j'en ai appris beaucoup d'un coup avec tes réponses.

    Je vais créer la fonctions et lorsqu'elle fonctionnera je reviendrais pour clore ce topic

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

Discussions similaires

  1. FB erreur conversion chaine --> date
    Par Just-Soft dans le forum Bases de données
    Réponses: 13
    Dernier message: 28/03/2011, 11h44
  2. erreur lors de conversion des dates
    Par steph_arrow dans le forum MATLAB
    Réponses: 2
    Dernier message: 28/06/2010, 21h33
  3. erreur lors de la conversion Integer <=> date
    Par dirty_harry dans le forum SQL
    Réponses: 7
    Dernier message: 18/01/2010, 18h22
  4. Erreur de conversion de string à date
    Par the watcher dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/12/2009, 21h47
  5. Réponses: 7
    Dernier message: 25/09/2009, 10h02

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