it-swarm.com.de

Wie kann ich die Anzahl der Tage zwischen zwei Daten in Oracle 11g ermitteln?

Ich versuche in Oracle 11g eine ganzzahlige Anzahl von Tagen zwischen zwei Datumsangaben zu finden. 

Ich kann näher kommen, indem ich tue 

select sysdate - to_date('2009-10-01', 'yyyy-mm-dd') from dual

dies gibt jedoch ein Intervall zurück, und ich habe es nicht erfolgreich in eine Ganzzahl umgewandelt.

Bearbeiten: Offensichtlich in 10g gibt dies die Anzahl der Tage als Ganzzahl zurück.

28
Brian Ramsay

Ich habe es selbst herausgefunden. Ich brauche 

select extract(day from sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) from dual
14
Brian Ramsay

Oder du hättest das tun können:

select trunc(sysdate) - to_date('2009-10-01', 'yyyy-mm-dd') from dual

Dies gibt eine Anzahl von ganzen Tagen zurück:

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

Sie können versuchen mit:

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

Das wird funktionieren, ich habe mich selbst getestet.
Es gibt einen Unterschied zwischen sysdate und dem Datum, das aus dem Spalten-Zulassungsdatum abgerufen wurde

  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
  • Volle Tage zwischen Monatsende und Beginn des heutigen Tages, einschließlich des letzten Tages des Monats:

    SELECT LAST_DAY (TRUNC(SysDate)) - TRUNC(SysDate) + 1 FROM dual
    
  • Tage zwischen exakter Zeit:

    SELECT SysDate - TO_DATE('2018-01-01','YYYY-MM-DD') FROM dual
    
0
Oleksiy