Quantcast
Channel: Oracle Blog : apex
Viewing all articles
Browse latest Browse all 142

¿Cómo interpreta la Base de Datos Oracle el componente Siglo de la Fecha?

$
0
0

En la entrega de hoy quiero compartir con todos un tema que a veces no es muy facil de entender y por ello es que lo expongo aquí.

Las fechas son almacenadas internamente en la base de datos con formato numérico que soporta el centenario, año, mes y día y también información sobre las horas, minutos y segundos. 

Estos atributos están disponibles para cada literal, valor de columna o expresión que es del tipo Date.

Cuando se accede a la información de fecha desde una tabla, el formato por defecto de los resultados comprende dos dígitos que representan el día, una abreviatura de tres letras que corresponde al mes, y dos dígitos que representan el componente de año. 

Por defecto, estos componentes son separados con guiones en SQL * Plus y barras diagonales en SQL Developer. 

Aunque el componente del siglo no se muestra de forma predeterminada, se almacena en la base de datos cuando se inserta o se actualiza el valor de la fecha y se encuentra disponible para su recuperación. 

Entonces el formato DD-MON-RR es el valor predeterminado tanto para mostrar la fecha como para ingresarla. 

Al insertar o actualizar la información de fecha, el componente de siglo se obtiene de la función SYSDATE en el caso de que no se suministre. 

La máscara de formato de fecha RR difiere de la máscara de formato de fecha YY ya que se puede utilizar para especificar diferentes siglos basados en el corriente año y años especificados. 

Con respecto al siglo, como lo interpreta Oracle? 

Para entender cómo se asigna el siglo en Oracle, supongamos que la fecha actual es 02-FEB-2014.

El siglo que retorna para la fecha 24-JUL-14 en formato DD-MON-RR es de 20, ya que el año especificado está entre 0 y 49. 

En cambio si el año asignado está entre 50 y 99 el siglo retornado será 19, por ejemplo si la fecha actual es 02-FEB-2014, el siglo que retorna la fecha 24-JUL-94 es 19. 

Ahora que pasa si la fecha actual es por ejemplo 02-FEB-1975, en este caso si el año asignado está entre 50 y 99 el siglo devuelto para la fecha 24-JUL-94 es 19 y si el año asignado está entre 0 y 49 el siglo retornado para la fecha 24-JUL-14 será el siguiente, es decir 20. 

Para dar formato de fecha en la base de datos se usa el parámetro NLS_DATE_FORMAT.

Por ejemplo:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY MM DD';

select sysdate from dual; (para ver el resultado) 

Format Mask Format Description

DD -- Day of the month

MON -- Month of the year

YY -- Two-digit year

YYYY -- Four-digit year including century

RR -- Two-digit year (Year 2000–compliant)

CC -- Two-digit century

HH -- Hours with AM and PM

HH24 -- Twenty-four-hour time

MI -- Minutes

SS -- Seconds 

Para traducir los días se trabaja con el parámetro NLS_LANGUAGE

ALTER SESSION SET NLS_LANGUAGE=Spanish;

De verdad que el trabajo con las fechas siempre es un desafío constante ya que necesitamos conocer los diferentes tipos de formatos que trabaja la base de datos para poder construir nuestras aplicaciones en APEX sin errores.

Será hasta la próxima!


Viewing all articles
Browse latest Browse all 142


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>