Manejar fechas en Oracle o en cualquier base de datos es algo que vamos a tener que pasar alguna vez. En este artículo veremos los tips más frecuentes cuando se trabaja con fechas. Por ejemplo, cuando nos muestran distintos formatos en fechas, cuando queremos que se exporte con un formato desde la herramienta como también operaciones frecuentes con fechas. Comparto gratis un archivo de texto para que les pueda servir de guía.
Tabla de Contenido
Configurando fechas en Oracle SQL Developer Mostrando formato fechas Operaciones con fechasConfigurando fechas en Oracle SQL Developer (incluye separador decimales)
Para que se muestre la fecha en Oracle SQL Developer tenemos 2 opciones:
1. Aplicando para la sesión a través de la siguiente sentencia:
alter session set nls_date_format = ‘DD/MM/YYYY HH24:MI:SS’
2. A través de la interfaz gráfica de la herramienta podemos configurar no sólo el formato de fecha sino el separador de decimales.
- Seleccionar la opción del menú “Herramientas”
- Seleccionar la opción “Preferencias”
- Desplegar del menú izquierda la opción “Base de Datos” y seleccionar “NLS”
- Se mostrará las opciones y se deberá cambiar el Formato de Fecha, por ejemplo en la gráfica deseo que se muestren el día, horas , minutos y segundos.
Tip Adicional : Como se muestra en la imagen, podemos configurar también el separador de decimales en números para que no te muestre de esta manera 1.202.100 sino 1,200,100. De esta manera podemos manejar las fechas en Oracle SQL desde la configuración de la herramienta.
Mostrar formato en sentencia SQL
¿Te ha pasado que en tu Base de Datos tienes distintos formatos?, y te piden un reporte. Con estas funciones te podrán sacar de apuros de una manera simple que adecuará a un solo formato:
TO_CHAR: Convierte un texto en un formato Varchar, es útil cuando sólo queremos mostrar la información.
TO_DATE: Convierte un texto en un formato fecha, es útil cuando queremos realizar operaciones de fechas.
TO_TIMESTAMP: Convierte un texto en formato timestamp (utilizada para formatos con fracciones de segundos) y/o zona horaria.
Operaciones con fechas
Suma y resta de fechas
Para operaciones se sugiere utilizar la función to_date. Ejemplo:
- select to_date(’30/04/2020′,’dd/mm/yyyy’)-1 from dual
- select to_date(’25/03/2020′,’dd/mm/yyyy’)-to_date(’20/02/2020′,’ dd/mm/yyyy’)
Principales funciones de fechas a considerar
- SYSDATE : Una de las más básicas , te sirve para registrar la fecha actual y es utilizada en campos de auditoría (siempre en cualquier tabla debes guardar el usuario que crea, la fecha que crea el registro).
Select sysdate from dual; - ADD_MONTHS :Aumenta o Resta la cantidad de meses de una fecha
Select add_months(sysdate,4) from dual; - EXTRACT : Extrae el tipo de dato (año, mes , día, hora, minuto,segundo) de una fecha seleccionada. Utilizar year, month, day, minute y second.
Select extract(day from to_date( ’25/12/2020′,’dd/mm/yyy’)) from dual; - ROUND: Esta función generalmente usado en números también aplica a fechas, lo que hará es «redondear»
select round(to_date( ’25/12/2020′,’dd/mm/yyy’),’MONTH’) from dual; (redondeando la fecha más próxima será el 01/06/2020) - TRUNC: Similar a Round , en este caso truncará el resultado devolviendo a la fecha original.
select trunc(to_date( ’25/12/2020′,’dd/mm/yyy’),’MONTH’) from dual; (truncando esta fecha será 01/05/2020) - BETWEEN: Comparemos fechas en un rango de tiempo, por ejmplo este reporte que me piden extraer información entre horas
select 1 from dual where sysdate between to_date.e… - MONTHS_BETWEEN: Con esta función podemos comparar la cantidad demeses entre 2 fechas. (Me sirvió esta función para no estar calculando con días)
select months_between(sysdate,to_date(’30/05/2020′,’dd/mm/yyyy’)) from dual;
Tip Adicional
Si quiero conocer el día de una fecha , por ejemplo el dia de mi nacimiento podemos utilizar el siguiente código:
Select to_char(sysdate,’day’) from dual; si requerimos convertir en expresiones podemos utilizar este código utilizando la función DECODE:
Select DECODE(RTRIM(LTRIM(to_char(sysdate, ‘DAY’, ‘NLS_DATE_LANGUAGE=SPANISH’))),’Lunes’, 0, ‘Martes’, 1, ‘MIÉRCOLES’, 2, ‘JUEVES’, 3, ‘VIERNES’, 4, ‘SÁBADO’, 5, 6) from dual
Te adjunto este archivo de manera grauita donde consolido las principales sentencias mostradas en este artículo: Archivo Manejar Fechas Oracle
Manejar fechas en Oracle con estos tips te permitirá construir los script de manera más eficiente. Si quieres revisar otros tips de Oracle relacionados entra al enlace : Tips de Oracle