2016-10-24 9 views
3

Je suis en train de convertir le format d'une colonne varchar2 de 'DD-MON-YY' à 'JJ/MM/AAAA.oracle converti DD-MON-AA à DD/MM/YYYY

Dans l'exemple: de '01-janv.-16' à '01/01/2016'

Si vous pouvez demander ou il peut aider:

  • 'MON' La partie est en anglais mais mes paramètres actuels NLS sont en turc.
  • Toutes les années sont après 2000.

Comment puis-je faire cela? Merci à l'avance ..

+4

Pourquoi diable gardez-vous une date dans une colonne varchar? –

Répondre

6

Si vous ne spécifiez pas le paramètre NLS_DATE_LANGUAGE, le paramètre de votre propre session sera utilisé.

Vous pouvez passer outre que comme ceci:

select TO_CHAR(TO_DATE('01-JAN-16','DD-MON-YY', 'NLS_DATE_LANGUAGE = English'), 
      'DD/MM/YYYY') from dual; 

Cela affectera seulement cette requête, rien d'autre. Si vous avez besoin de travailler avec de nombreuses dates comme celle-ci,

ALTER SESSION SET NLS_DATE_LANGUAGE='ENGLISH' 

- alors vous pouvez revenir plus tard, ou il sera remis à la Turquie lorsque cette session se termine et vous commencez une autre session.

Si vous souhaitez que cette modification soit (presque) permanente, placez-la dans vos paramètres dans SQL Developer ou Toad ou dans le fichier login.sql pour SQL * Plus.

+0

merci beaucoup de mathguy et Dcookie! – kzmlbyrk

+0

Je vous aurais donné plus d'un vote si je pouvais! Merci beaucoup – benshabatnoam

2

Essayez ceci:

TO_CHAR(TO_DATE('01-JAN-16','DD-MON-YY'),'DD/MM/YYYY') 

Vos données doivent être propres - tout doit être conforme au format original ou vous rencontrerez des erreurs sur la conversion de TO_DATE.

+0

Merci pour la réponse, j'ai un message d'erreur "01843. 00000 -" mois pas valide ".J'ai vérifié toutes les valeurs sont dans le même format.Est-ce lié à mes paramètres NLS? Comment puis-je résoudre ce problème? – kzmlbyrk