23 - Funciones de fechas y horas |
Oracle dispone de varias funciones que operan con tipos de datos "date". Estas son algunas:
- add_months(f,n): agrega a una fecha, un número de meses. Si el segundo argumento es positivo, se le suma a la fecha enviada tal cantidad de meses; si es negativo, se le resta a la fecha enviada tal cantidad de meses. Ejemplo:
select add_months('10/06/2007',5) from dual; --retorna "10/11/07" select add_months('10/06/2007',-5) from dual; --retorna "10/01/07" select add_months('30/01/2007',1) from dual;-- retorna "25/02/07" ya que es el último día de ese mes.
- last_day(f): retorna el ultimo día de mes de la fecha enviada como argumento. Ejemplo:
select last_day('10/02/2007') from dual;-- "28/02/07" select last_day('10/08/2007') from dual;-- "31/08/07"
- months_between(f1,f2): retorna el numero de meses entre las fechas enviadas como argumento. Ejemplo:
select months_between('19/05/2003','21/06/05') from dual;-- retorna
- next_day(fecha,dia): retorna una fecha correspondiente al primer día especificado en "dia" luego de la fecha especificada. En el siguiente ejemplo se busca el lunes siguiente a la fecha especificada:
select next_day('10/08/2007','LUNES') from dual;
- current_date: retorna la fecha actual. Ejemplo:
select current_date from dual;
- current_timestamp: retorna la fecha actual
select current_timestamp from dual;
Retorna: 10/08/07 09:59:44,109000000 AMERICA/BUENOS_AIRES
- sysdate: retorna la fecha y hora actuales en el servidor de Oracle.
-systimestamp: retorna fecha y hora actuales.
select systimestamp from dual;
Retorna 10/08/07 10:33:48,984000000 -03:00
- to_date: convierte una cadena a tipo de dato "date". Ejemplo:
select to_date ('05-SEP-2007 10:00 AM','DD-MON-YYYY HH:MI AM') from dual;
Retorna 05/09/07
- to_char: convierte una fecha a cadena de caracteres. Ejemplo:
select to_char('10/10/2007')from dual;
- extract(parte,fecha): retorna la parte (especificada por el primer argumento) de una fecha. Puede extraer el año (year), mes (month), día (day), hora (hour), minuto (minute), segundo (second), etc. Ejemplo:
select extract(month from sysdate) from dual;
retorna el número mes de la fecha actual.
En Oracle: Los operadores aritméticos "+" (más) y "-" (menos) pueden emplearse con fechas. Por ejemplos:
select sysdate-3:
Retorna 3 días antes de la fecha actual.
select to_date('15/12/2007')-5 from dual;
Retorna 10/12/07
Se pueden emplear estas funciones enviando como argumento el nombre de un campo de tipo date.