J'essaie de trouver un nombre entier de jours entre deux dates dans Oracle 11g.
Je peux m'approcher en faisant
select sysdate - to_date('2009-10-01', 'yyyy-mm-dd') from dual
mais cela retourne un intervalle et je n'ai pas réussi à le convertir en entier.
Edit: Apparemment, dans 10g, cela retourne le nombre de jours sous forme d'entier.
Je l'ai compris moi-même. j'ai besoin
select extract(day from sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) from dual
Ou vous auriez pu faire ceci:
select trunc(sysdate) - to_date('2009-10-01', 'yyyy-mm-dd') from dual
Cela retourne un NOMBRE de jours entiers:
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)
Vous pouvez essayer d'utiliser:
select trunc(sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) as days from dual
Cela fonctionnera je me suis testé.
Il donne la différence entre sysdate et la date extraite de la colonne 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
Jours complets entre la fin du mois et le début de la journée, y compris le dernier jour du mois:
SELECT LAST_DAY (TRUNC(SysDate)) - TRUNC(SysDate) + 1 FROM dual
Nombre de jours entre l'heure exacte:
SELECT SysDate - TO_DATE('2018-01-01','YYYY-MM-DD') FROM dual