Saltar la navegación

5.3.- Funciones de manejo de fechas.

Calendario que representa el manejo de fechas.
Stockbyte. (Uso educativo nc)


La fecha de emisión de una factura, de llegada de un avión, de ingreso en una web, podríamos seguir poniendo infinidad de ejemplos, lo que significa que es una información que se requiere en muchas situaciones y es importante guardar.

En los SGBD se utilizan mucho las fechas. Oracle tiene dos tipos de datos para manejar fechas, son DATE y TIMESTAMP.

  • DATE almacena fechas concretas incluyendo a veces la hora.
  • TIMESTAMP almacena un instante de tiempo más concreto que puede incluir hasta fracciones de segundo.

Podemos realizar operaciones numéricas con las fechas:

  • Le podemos sumar números y esto se entiende como sumarles días, si ese número tiene decimales se suman días, horas, minutos y segundos. El resultado es una fecha.
  • Le podemos restar números y esto se entiende como restarle días, ir atrás en el calendario, si ese número tiene decimales se restan días, horas, minutos y segundos. El resultado es una fecha.
  • La diferencia o resta entre dos fechas  nos dará el número de días entre esas fechas.

En Oracle tenemos las siguientes funciones más comunes:

  • SYSDATE Devuelve la fecha y hora actuales. Ejemplo:
SELECT SYSDATE FROM DUAL; --Resultado: 15/08/20
  • SYSTIMESTAMP Devuelve la fecha y hora actuales en formato TIMESTAMP. Ejemplo:
SELECT SYSTIMESTAMP FROM DUAL; --Resultado: 15/08/20 11:40:41,969000 +02:00
  • ADD_MONTHS(fecha, n) Añade a la fecha el número de meses indicado con n. Ejemplo:
SELECT ADD_MONTHS('27/07/11', 5) FROM DUAL; --Resultado: 27/12/11
  • MONTHS_BETWEEN(fecha1, fecha2) Devuelve el número de meses que hay entre fecha1 y fecha2. Ejemplo:
SELECT MONTHS_BETWEEN('12/07/11','12/03/11') FROM DUAL; --Resultado: 4
  • LAST_DAY(fecha) Devuelve el último día del mes al que pertenece la fecha. El valor devuelto es tipo DATE. Ejemplo:
SELECT LAST_DAY('27/07/11') FROM DUAL; --Resultado: 31/07/11
  • NEXT_DAY(fecha, d) Indica el día que corresponde si añadimos a la fecha el día d. El día devuelto puede ser texto ('Lunes', Martes', ..) o el número del día de la semana (1=lunes, 2=martes, ..) dependiendo de la configuración. Ejemplo:
SELECT NEXT_DAY('31/12/11','LUNES') FROM DUAL; --Resultado: 02/01/12
  • EXTRACT(valor FROM fecha) Extrae un valor de una fecha concreta. El valor puede ser day, month, year, hours, etc. Ejemplo:
SELECT EXTRACT(MONTH FROM SYSDATE) FROM DUAL; --Resultado: 8

En Oracle: Los operadores aritméticos "+" (más) y "-" (menos) pueden emplearse para las fechas. Por ejemplo:

 

SELECT SYSDATE – 5 FROM DUAL; -- Devuelve la fecha correspondiente a 5 días antes de la fecha actual

Se pueden emplear estas funciones utilizando como argumento el nombre de un campo de tipo fecha.

Autoevaluación

Pregunta

¿Cuáles de estas afirmaciones sobre funciones de manejo de fechas son ciertas?

Respuestas

Existen dos tipos de fechas de datos con las que podemos trabajar, DATE y TIMESTAMP.

Se puede poner como argumento el nombre de un campo de cualquier tipo.

Le podemos sumar o restar números, lo cual se entiende como sumarle o restarle días.

La diferencia entre dos fechas nos dará un número de días.

Retroalimentación