¿Cómo puedo obtener el número de días entre 2 fechas en Oracle 11g?
Pregunta
Estoy tratando de encontrar un número entero de días entre dos fechas en Oracle 11g.
Puedo acercarme haciendo
select sysdate - to_date('2009-10-01', 'yyyy-mm-dd') from dual
pero esto devuelve un intervalo, y no he tenido éxito al convertir esto en un entero.
Editar: aparentemente en 10 g, esto devuelve el número de días como un entero.
Solución 2
Lo descubrí yo mismo. Necesito
select extract(day from sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) from dual
Otros consejos
O podrías haber hecho esto:
select trunc(sysdate) - to_date('2009-10-01', 'yyyy-mm-dd') from dual
Esto devuelve un NÚMERO de días completos:
SQL> create view v as
2 select trunc(sysdate) - to_date('2009-10-01', 'yyyy-mm-dd') diff
3 from dual;
View created.
SQL> select * from v;
DIFF
----------
29
SQL> desc v
Name Null? Type
---------------------- -------- ------------------------
DIFF NUMBER(38)
Puedes intentar usar:
select trunc(sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) as days from dual
Esto funcionará, lo he probado yo mismo.
Da la diferencia entre sysdate y fecha obtenida de la columna admitdate
TABLE SCHEMA:
CREATE TABLE "ADMIN"."DUESTESTING"
(
"TOTAL" NUMBER(*,0),
"DUES" NUMBER(*,0),
"ADMITDATE" TIMESTAMP (6),
"DISCHARGEDATE" TIMESTAMP (6)
)
EXAMPLE:
select TO_NUMBER(trunc(sysdate) - to_date(to_char(admitdate, 'yyyy-mm-dd'),'yyyy-mm-dd')) from admin.duestesting where total=300
-
Días completos entre finales de mes y principios de hoy, incluido el último día del mes:
SELECT LAST_DAY (TRUNC(SysDate)) - TRUNC(SysDate) + 1 FROM dual
-
Días entre el uso de la hora exacta:
SELECT SysDate - TO_DATE('2018-01-01','YYYY-MM-DD') FROM dual
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow