Frage

Ich versuche, eine ganze Anzahl von Tagen zwischen zwei Daten in Oracle 11g zu finden.

Ich kann nahe kommen, indem Sie

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

, aber das gibt ein Intervall, und ich habe nicht erfolgreich gewesen, dies zu einer ganzen Zahl zu werfen.

Edit:. Offenbar in 10 g, dies gibt die Anzahl der Tage als eine ganze Zahl

War es hilfreich?

Lösung 2

Habe ich es aus mir. Ich brauche

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

Andere Tipps

Oder Sie könnten dies getan haben:

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

Dies gibt eine Anzahl von ganzen Tagen:

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)

Sie können versuchen, mit:

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

Dies funktioniert habe ich selbst getestet.
Es gibt Unterschied zwischen sysdate und Datum abgerufen aus Spalte 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
  • Voll Tage zwischen Ende des Monats und starten heute den letzten Tag des Monats:

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

    SELECT SysDate - TO_DATE('2018-01-01','YYYY-MM-DD') FROM dual
    
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top