Como posso obter o número de dias entre 2 datas no Oracle 11g?
Pergunta
Eu estou tentando encontrar um número inteiro de dias entre duas datas em Oracle 11g.
Eu posso chegar perto, fazendo
select sysdate - to_date('2009-10-01', 'yyyy-mm-dd') from dual
mas este retorna um intervalo, e eu não têm sido bem sucedidas lançando isso para um número inteiro.
Edit:. Aparentemente, em 10g, este devolve o número de dias como um inteiro
Solução 2
Eu percebi isso eu mesmo. Eu preciso
select extract(day from sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) from dual
Outras dicas
Ou você poderia ter feito isso:
select trunc(sysdate) - to_date('2009-10-01', 'yyyy-mm-dd') from dual
Este retorna um número de dias inteiros:
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)
Você pode tentar usar:
select trunc(sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) as days from dual
Isto irá funcionar eu tenha me testado.
Dá diferença entre sysdate e data obtido a partir admitdate coluna
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
-
dias completos entre o final do mês e começar de hoje, incluindo o último dia do mês:
SELECT LAST_DAY (TRUNC(SysDate)) - TRUNC(SysDate) + 1 FROM dual
-
Dias entre usar o tempo exato:
SELECT SysDate - TO_DATE('2018-01-01','YYYY-MM-DD') FROM dual
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow