web-dev-qa-db-fra.com

Comment puis-je obtenir le nombre de jours entre 2 dates dans Oracle 11g?

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.

28
Brian Ramsay

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
14
Brian Ramsay

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)
37
Tony Andrews

Vous pouvez essayer d'utiliser:

select trunc(sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) as days from dual
3
Sabeen Malik

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
1
Akki
  • 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
    
0
Oleksiy