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 Oracle Discussion :

Select d'un champ date null


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 240
    Par défaut Select d'un champ date null
    Bonjour,

    Je bloque sur le résultat d'une requête qui pourtant est toute simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT itmsales.itmref_0||';'||itmsales.baspri_0||';'||itmsales.sbsitm_0||';'||TO_CHAR(itmsales.sbsdat_0, 'YYYY-MM-DD') FROM MaDb.itmsales itmsales;
    Les ||';'|| sont là parce que je fais un export en csv.

    J'ai bien un résultat mais le problème est avec le champ sbsdat_0 qui parfait comporte une valeur NULL et du coups Oracle me renvoie comme résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XXXXXXXX;10; ;1599-12-31
    Dans le cas où il y a une date j'ai bien un résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    YYYYYYYY;121.7;SDD-11130068;2017-08-04
    Une fois exporté je pourrais retraiter le fichier mais tant qu'à faire autant faire bosser Oracle.

    Vous avez une idée ?

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Un to_char sur une date NULL renvoit NULL, pas le 31/12/1599
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TO_CHAR(ld, 'DD/MM/RRRR') ld, DUMP(ld) dp, TO_CHAR(sd, 'DD/MM/RRRR') ls, DUMP(sd) sp  FROM (SELECT TO_DATE(NULL) ld, sysdate sd FROM dual)
     
    LD	DP	LS		SP
    	NULL	21/08/2017	Typ=13 Len=8: 225,7,8,21,10,34,44,0
    Donne le résultat d'une ligne où tu as 31/12/1599, avec un dump de la colonne date.

  3. #3
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 240
    Par défaut
    Résultat de ta commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SQL> SELECT TO_CHAR(ld, 'DD/MM/RRRR') ld, DUMP(ld) dp, TO_CHAR(sd, 'DD/MM/RRRR') ls, DUMP(sd) sp  FROM (SELECT TO_DATE(NULL) ld, sysdate sd FROM dual);
     
    LD
    ----------
    DP
    --------------------------------------------------------------------------------
    LS
    ----------
    SP
    --------------------------------------------------------------------------------
     
    NULL
    21/08/2017
    Typ=13 Len=8: 225,7,8,21,11,6,27,0
    Je précise que le SQL me pose pas trop de problème mais plus dans l'univers Mysql. Alors qu'Oracle je débute tout juste

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Je demandais sur cette ligne : XXXXXXXX;10; ;1599-12-31

  5. #5
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 240
    Par défaut
    J'ai essayé d'adapter ta requête à la mienne non sens mal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT itmsales.itmref_0, itmsales.baspri_0, itmsales.sbsitm_0, TO_CHAR(itmsales.sbsdat_0, 'DD/MM/RRRR') ld, DUMP(itmsales.sbsdat_0) dp
    FROM itmsales itmsales
    WHERE itmsales.itmref_0 = 'XXXXXXXXXX';
    Et voici le résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ITMREF_0						       BASPRI_0 SBSITM_0						     LD
    ------------------------------------------------------------ ---------- ------------------------------------------------------------ ----------
    DP
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    XXXXXXXXXX							     11 							     31/12/1599
    Typ=12 Len=7: 115,199,12,31,1,1,1

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

    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
    Billets dans le blog
    4
    Par défaut
    Suivant la doc Oracle, le type 12 est bien une DATE.

    Tu as donc 31/12/1599 dans ta colonne (le dump le certifie).

    Pourquoi dis-tu alors que le champ est NULL ?
    le champ sbsdat_0 qui parfait comporte une valeur NULL

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

Discussions similaires

  1. Selection conditionnelle sur champ date
    Par Hmiachon dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 29/04/2008, 16h56
  2. Oracle 9.2 : Importation et champ date NULL
    Par mimil77210 dans le forum Oracle
    Réponses: 16
    Dernier message: 17/04/2008, 16h25
  3. champ date null
    Par viny dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 07/08/2007, 22h18
  4. Problème champ Date Null
    Par cisco7 dans le forum Oracle
    Réponses: 5
    Dernier message: 24/09/2006, 14h58
  5. [Delphi & DBExpress ] Mettre un champs date à null
    Par falcon dans le forum Bases de données
    Réponses: 10
    Dernier message: 03/11/2004, 09h21

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