Databases
T01-007-04 Funciones de fechas
Enunciado
Aritmética de fechas.
Antes de comenzar con las funciones de fechas, es importante entender que podemos hacer ciertas operaciones aritméticas con las fechas.
Por ejemplo, podemos incrementar o decrementar una fecha en un número de días (incluso con fracciones de días).
SELECT
CURRENT_DATE -1 AS "AYER",
CURRENT_DATE AS "HOY",
CURRENT_DATE + 1 AS "MAÑANA"
FROM DUAL
AYER HOY MAÑANA 22-SEP-21 23-SEP-21 24-SEP-21
CURRENT_DATE: Devuelve la fecha actual.Más adelante, podremos, incluso, restar 2 fechas y saber el número de días transcurridos entre ellas.
Funciones de fecha
A continuación se muestran una tabla con funciones de cadenas de caracteres que, en esta ocasión, devuelven un resultado numérico.
Función
Descripción
SYSDATEDevuelve la fecha del sistema.
ADD_MONTHS(fecha, n)Devuelve la fecha ‘fecha’ incrementada en ‘n’ meses
LAST_DAY(fecha)Devuelve la fecha del último día del mes que contiene ‘fecha’
MONTHS_BETWEEN(fecha1, fecha2)Devuelve la deferencia en meses entre las fechas ‘fecha1’ y ‘fecha2’
NEXT_DAY(fecha, cad)Devuelve la fecha del primer día de la semana indicado por ‘cad’ después de la fecha indicada por ‘fecha’. El día de la semana en ‘cad’ se indica con su nombre, es decir, lunes (monday), martes (tuesday), ...
TO_DATE(cad, formato, nlsparam)Convierte la cadena caden una valor de tipoDATEatendiendo a lacadenade formato.La lista completa de funciones la podéis obtener de la documentación de Funciones de fechas en Oracle.
Ejemplo:
La función
ADD_MONTHS(fecha, n)devuelve la fecha ‘fecha’ incrementada en ‘n’ meses.Podemos averiguar quién lleva más de 20 años contratado en la empresa si, al incrementar la fecha de contratación en 20 años * 12 meses, la fecha resultante todavía es menor que la fecha actual:
SELECT FIRST_NAME, LAST_NAME, HIRE_DATE
FROM HR.employees
WHERE ADD_MONTHS(HIRE_DATE, 20 * 12) < CURRENT_DATE
FIRST_NAME LAST_NAME HIRE_DATE Lex De Haan 13-JAN-01 Ejercicio:
Trata de obtener los empleados que tienen más de 20 años de antigüedad, pero, en esta ocasión, utilizando la función
MONTHS_BETWEEN(fecha1, fecha2), que devuelve la deferencia en meses entre las fechas ‘fecha1’ y ‘fecha2’Ordena el resultado alfabéticamente por los apellidos.
Tipo
Solución
SELECT FIRST_NAME, LAST_NAME, HIRE_DATE, FLOOR(MONTHS_BETWEEN(CURRENT_DATE, HIRE_DATE) / 12) AS "ANTIGUEDAD"
FROM HR.employees
WHERE MONTHS_BETWEEN(CURRENT_DATE, HIRE_DATE) / 12 > 20
ORDER BY LAST_NAME
Prueba
LibrerÃas (Onfly databases)

