Adicionar días/horas/minutos/segundos a fechas en Oracle
Publicado por Luis M.Feb 18
Cuando de trabajar con fechas en Oracle se trata, se debe tener en cuenta que la aritmética de fechas en Oracle trabaja en función de un día. Aunque podemos trabajar con cualquier fecha, para hacerlo más fácil realizaré la labor con la pseudo-columna SYSDATE. Si bien sabemos, SYSDATE muestra la fecha y hora actual de sistema, sumando 1 (uno) a SYSDATE se aumentará la fecha y hora actual en un día. Se pueden usar fracciones para añadir horas, minutos o segundos a la fecha:
ALTER SESSION SET nls_date_format = 'dd-mm-yyyy hh24:mi:ss';
SELECT sysdate,
sysdate + 1,
sysdate + 1/24
FROM dual;SYSDATE SYSDATE+1 SYSDATE+1/24 ------------------- ------------------- ------------------- 18-02-2010 09:26:44 19-02-2010 09:26:44 18-02-2010 10:26:44
SELECT sysdate,
sysdate + 1/1440,
sysdate + 1/86400
FROM dual;SYSDATE SYSDATE+1/1440 SYSDATE+1/86400 ------------------- ------------------- ------------------- 18-02-2010 09:26:44 18-02-2010 09:27:44 18-02-2010 09:26:45
Algunos ejemplos que pueden servir para aclarar el uso de fracciones, teniendo presente que 1 día = 24 horas = 1440 minutos = 86400 segundos:
Fecha y hora actual | sysdate |
Dia siguiente (24 Horas adelante) | sysdate + 1 |
12 días delante | sysdate + 12 |
2 Horas adelante | sysdate + 2 / 24 |
120 Minutos adelante | sysdate + 120 / 1440 |
15 Segundos adelante | sysdate + 15 / 86400 |
Día siguiente a las 9 AM | TRUNC(sysdate) + 1 + 9/24 |
Próximo martes a las 3 PM | NEXT_DAY(TRUNC(sysdate), 'TUESDAY') + 15/24 |
Ultimo dia del mes a las 10:30 AM | LAST_DAY(TRUNC(sysdate)) + 10/24 + 30/1440 |
Próximo Martes, Jueves o Domingo a las 8:05 AM | TRUNC(LEAST(NEXT_DAY(sysdate, 'TUESDAY'), NEXT_DAY(sysdate, 'THURSDAY'), NEXT_DAY(sysdate, 'SUNDAY'))) + 8/24 + 5/1440 |
Sin comentarios
You must be logged in to post a comment.