Oracle spécifique format d'horodatage 'DD-MON-RR HH.MI.SSXFF SUIS"
J'ai un problème avec Oracle 11g spécifique format d'horodatage.
C'est ce que j'ai:
select to_timestamp('21-OCT-15 08.24.30.000000000 PM','DD-MON-RR HH.MI.SSXFF AM') from dual;
Réponse à partir de la base de données: ORA-01855: AM/A.M. or PM/P.M. required
01855. 00000 - "AM/A.M. or PM/P.M. required"
J'ai aussi essayé de modifier les paramètres de la session avec plusieurs commandes et toujours rien.
alter session set NLS_LANGUAGE='ENGLISH';
alter session set NLS_DATE_LANGUAGE='ENGLISH';
alter session set NLS_TIMESTAMP_FORMAT = 'DD-MON-RR HH.MI.SSXFF AM';
alter session set NLS_TIMESTAMP_TZ_FORMAT='DD-MON-RR HH.MI.SSXFF AM';
Je ne peux pas changer de format d'horodatage dans l'instruction SELECT, besoin de rester comme il est. Je suppose que le problème est dans les paramètres de la session.
Quelqu'un de connu dans la base de données oracle administration peut proposer quelque chose, je vais essayer. Je sais qu'il y a un couple de des postes similaires mais je n'ai pas trouver une solution. Grâce
Voici mes paramètres de session.
select * from nls_session_parameters;
.
comme séparateur pour les composants et que (par défaut) séparateur décimal. Est-ce de travailler avec 'DD-MON-RR HH.MI.SSXFF9 AM'
? NLS_LANGUAGE
définit la langue des messages d'erreur, je suppose que vous dire NLS_DATE_LANGUAGE
.J'ai essayé de changer NLS_DATE_LANGUAGE aussi, et toujours le même problème. Aussi avec votre suggestion de changer NLS_TIMESTAMP_FORMAT ne fonctionne pas.
pouvez-vous exécuter
select * from nls_session_parameters;
et coller la mise en forme de résultats dans la question? Il fonctionne très bien pour moi dans la 12c. Une fois que vous donner les détails, nous allons comparer la différence.J'ai ajouté dans le post original de l'image avec les résultats.
OriginalL'auteur Josip | 2015-11-21
Vous devez vous connecter pour publier un commentaire.
Le cœur du problème est que, sur le niveau de la session, vous avez
nls_numeric_characters=',.'
pendant que votre timestamp chaîne contient le point (.
) alors que les secondes-de-microsecondes délimiteur à la place.La
to_timestamp()
fonction peut accepter un troisième paramètre pour l'annulation de la NLS paramètres. Voici une petite démo pour vous ...Veuillez noter que le troisième paramètre de la
to_timestamp()
fonction dans le troisième SÉLECTIONNEZ. C'est ce que vous pourriez faire, aussi, en dehors de toutes les autres réponses correctes.OriginalL'auteur nop77svk
faire une sauvegarde de vos paramètres NLS et de l'exécution de ces.
Puis exécutez à nouveau l'instruction SQL.
OriginalL'auteur Utsav
Essayez ceci:
SELECT TO_CHAR(TO_TIMESTAMP(**'2015-11-21-13:03:07.04776'**),'DD-MON-RR HH.MI.SSXFF AM') FROM DUAL;
Le format d'horodatage entre guillemets doit être le même que le résultat de cette requête:SELECT TO_CHAR(LOCALTIMESTAMP) FROM DUAL
OriginalL'auteur Nik
Enfin, j'ai ajouté du Territoire sur la liste précédente modifié les propriétés de session pour le faire fonctionner pour moi. Grâce
OriginalL'auteur Josip