Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Sql Developer
Sql Developer Forum d'entraide sur Oracle Sql Developer
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/08/2007, 14h56   #1
Membre habitué
 
Avatar de Orakle
 
Homme Laurent Chevrier
Chef de projet collaboratif
Inscription : mars 2004
Messages : 171
Détails du profil
Informations personnelles :
Nom : Homme Laurent Chevrier
Âge : 43
Localisation : France, Aube (Champagne Ardenne)

Informations professionnelles :
Activité : Chef de projet collaboratif
Secteur : Industrie

Informations forums :
Inscription : mars 2004
Messages : 171
Points : 113
Points : 113
Envoyer un message via MSN à Orakle
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 :
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.
Orakle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2007, 17h17   #2
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

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

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Citation:
Je pense que cela est dû au fait qu'il n'y a pas toujours de date dans les champs.
Non car
Citation:
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
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2007, 09h28   #3
Membre habitué
 
Avatar de Orakle
 
Homme Laurent Chevrier
Chef de projet collaboratif
Inscription : mars 2004
Messages : 171
Détails du profil
Informations personnelles :
Nom : Homme Laurent Chevrier
Âge : 43
Localisation : France, Aube (Champagne Ardenne)

Informations professionnelles :
Activité : Chef de projet collaboratif
Secteur : Industrie

Informations forums :
Inscription : mars 2004
Messages : 171
Points : 113
Points : 113
Envoyer un message via MSN à Orakle
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
Orakle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2007, 09h57   #4
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

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

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Code :
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
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2007, 10h19   #5
Membre habitué
 
Avatar de Orakle
 
Homme Laurent Chevrier
Chef de projet collaboratif
Inscription : mars 2004
Messages : 171
Détails du profil
Informations personnelles :
Nom : Homme Laurent Chevrier
Âge : 43
Localisation : France, Aube (Champagne Ardenne)

Informations professionnelles :
Activité : Chef de projet collaboratif
Secteur : Industrie

Informations forums :
Inscription : mars 2004
Messages : 171
Points : 113
Points : 113
Envoyer un message via MSN à Orakle
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.
Orakle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2007, 10h53   #6
Membre habitué
 
Avatar de Orakle
 
Homme Laurent Chevrier
Chef de projet collaboratif
Inscription : mars 2004
Messages : 171
Détails du profil
Informations personnelles :
Nom : Homme Laurent Chevrier
Âge : 43
Localisation : France, Aube (Champagne Ardenne)

Informations professionnelles :
Activité : Chef de projet collaboratif
Secteur : Industrie

Informations forums :
Inscription : mars 2004
Messages : 171
Points : 113
Points : 113
Envoyer un message via MSN à Orakle
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 ?
Orakle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2007, 11h12   #7
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

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

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
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 :
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 :
1
2
 
SELECT calcul_date(SDADDJ), calcul_date( SDCNDJ) FROM ...
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2007, 11h19   #8
Membre habitué
 
Avatar de Orakle
 
Homme Laurent Chevrier
Chef de projet collaboratif
Inscription : mars 2004
Messages : 171
Détails du profil
Informations personnelles :
Nom : Homme Laurent Chevrier
Âge : 43
Localisation : France, Aube (Champagne Ardenne)

Informations professionnelles :
Activité : Chef de projet collaboratif
Secteur : Industrie

Informations forums :
Inscription : mars 2004
Messages : 171
Points : 113
Points : 113
Envoyer un message via MSN à Orakle
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
Orakle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h46.


 
 
 
 
Partenaires

Hébergement Web