2011-11-09 3 views
0
declare 
    v_date date; 

    CURSOR abc 
    is 
     select a_date 
     from abc 
     where part_id ='E00000001'; 
begin 
    open abc; 
    fetch abc into v_date; 
    close abc; 

    dbms_output.put_line('date is '||v_date); 
end; 
/

Voici ma date qui est été tiré par les cheveux est '31/12/2099 23: 59: 59' , maintenant la question est que quand je vais chercher cela en v_date l'aide du curseur son entrée ... .date est 31/DEC/99erreur de format date

Ce qui peut être la question

J'utilise Oracle SGBDR

+0

Quel type de colonne est 'a_date' exactement? – Yahia

+0

sa date type de données – gaurav

+0

ok - s'il vous plaît voir ma réponse ci-dessous ... – Yahia

Répondre

1

Je vois une chose qui me dérange avec votre code - abc est le nom de la table et du curseur ... c'est une mauvaise pratique à mon humble avis.

En ce qui concerne le problème, essayez

dbms_output.put_line('date is '||TO_CHAR (v_date, 'DD/MM/YYYY HH24:MI:SS')); 

format de date La sortie que vous voyez est très probablement le résultat d'une db/session de réglage des niveaux de NLS en ce qui concerne le format de date qui est utilisé lors de la conversion d'un DATE à un VARCHAR2 . Mon code utilise un format de date explicite pour fonctionner indépendamment de ce paramètre (ce qui n'est PAS idéal car cela pourrait le rendre problématique dans des situations où la localisation/globalisation est nécessaire!).

+0

Yahia: pour abc nom, je viens de préparer un code poc à afficher, ce n'est pas le code réel.Dans le code réel je vais chercher la date dans un enregistrement de curseur .So Dans sélectionner, nous devons faire une opération pour aller chercher – gaurav

+0

@gaurav le code de ma réponse a-t-il montré la bonne date? – Yahia

+0

oui, j'ai eu la bonne réponse .. merci – gaurav