Qué tal,
Con lo de "error lógico" creo que se puede haber tomado mal, me refería a que tal cual lo pusiste seguramente te mandaría un error, más bien de sintaxis (ORA-01821: formato de fecha no reconocido). Por el "P.M" sin el último punto, como ahí mismo te comenté.
Ahora, en cuanto a la configuración de la fecha... hay muchísimas formas de configurar esta variable.
Seguramente no quieres cambiar el formato de fecha para toda la BD, por lo que sólo buscas esto para un usuario:
***Antiguamente se usaba un trigger (de tipo Evento) que cambiara el formato de la fecha una vez se conectaba X usuario, pero ahora es mejor usar las variables de entorno del sistema operativo del propio cliente. Define la variable en tu S.O. (Windows, Linux, etc) NLS_LANG, o mejor aún para tu caso, NLS_DATE_FORMAT. Te pongo un ejemplo:
| Code: |
SQL> select sysdate from dual;
SYSDATE
--------
27/01/10
SQL> exit
Desconectado de Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options
oracle@ora9i:~> export NLS_DATE_FORMAT="DD-MM-YYYY HHMISS P.M."
oracle@ora9i:~>
oracle@ora9i:~> sqlplus / as sysdba
SQL*Plus: Release 10.2.0.3.0 - Production on Mié Ene 27 16:02:42 2010
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Conectado a:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select sysdate from dual;
SYSDATE
--------------------
27-01-2010 040246 PM
|
Este cambio de formato de fecha normalmente lo hacen automática e internamente casi todos los clientes (Ej: Toad, Java Drivers, etc), una vez se conectan a la instancia. Así que aunque tengas X definición a nivel BD, para este formato, el cambio del cliente lo sobreescribirá. Es decir que a veces, aunque dejes estático el formato a nivel BD, los clientes normalmente te lo cambiarán y no funcionará la "solución".
Nota: Si tienes dudas, "tracea" (trace) dichas sesiones de los clientes y verás cómo cambia los valores de NLS, tan pronto se conectan. Y te recuerdo, hay muchas más formas de cambiar esto.
Te recomiendo leer un poco sobre Character Sets y NLS en general, ya que en base a estos, van relacionados los parámetros NLS_LANGUAGE y NLS_TERRITORY. Los cuales cambiarán el valor por default de tu fecha.
Un muy buen documento sobre esto es el 241047.1. Te lo recomiendo mucho y no está largo.
Un saludo,
Carlos Contreras
DBASupport.