to_date - to_char oracle ejemplos
Fecha de Oracle-Cómo agregar años hasta la fecha (6)
Tengo un campo de fecha
DATE = 10/10/2010
suma = 4 (este es el número de años por cálculo)
¿Hay alguna manera de agregar cuatro años al 10/10/2010 y hacer que sea 10/10/2014?
Creo que podrías usar la función ADD_MONTHS()
. 4 años son 48 meses, por lo que:
add_months(DATE,48)
Aquí hay alguna información sobre el uso de la función:
http://www.techonthenet.com/oracle/functions/add_months.php
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1157035034361
Intente agregar meses (12 * número de años) en su lugar. Me gusta esto-
add_months(date''2010-10-10'', 48)
No estoy seguro, si entendí tu pregunta correctamente, pero
select add_months(someDate, numberOfYears * 12) from dual
podría hacer el truco
Una opción más aparte de ADD_MONTHS
SELECT
SYSDATE,
SYSDATE
+ TO_YMINTERVAL ( ''1-0'' )
FROM
DUAL;
SYSDATE SYSDATE+TO_YMINTERVAL(''1-0'')
--------- ----------------------------
29-OCT-13 29-OCT-14
1 row selected.
SELECT
SYSDATE,
SYSDATE
+ TO_YMINTERVAL ( ''2-0'' )
FROM
DUAL;
SYSDATE SYSDATE+TO_YMINTERVAL(''2-0'')
--------- ----------------------------
29-OCT-13 29-OCT-15
1 row selected.
SELECT
TO_DATE ( ''29-FEB-2004'',
''DD-MON-YYYY'' )
+ TO_YMINTERVAL ( ''1-0'' )
FROM
DUAL
*
Error at line 4
ORA-01839: date not valid for month specified
Pero el último es ilegal ya que no hay 29 de febrero de 2005, por lo que falla en los casos de año bisiesto (29 de febrero)
Lea la documentation para el mismo.
Usa add_months
Ejemplo:
SELECT add_months( to_date(''10-OCT-2010''), 48 ) FROM DUAL;
Advertencia
add_months, devuelve el último día del mes resultante si ingresó el último día de un mes para comenzar.
Entonces add_months(to_date(''28-feb-2011''),12)
devolverá 29-feb-2012 como resultado.