Come posso ottenere il numero di giorni tra 2 date in Oracle 11g?
Domanda
Sto cercando di trovare un numero intero di giorni tra due date in Oracle 11g.
Posso avvicinarmi facendo
select sysdate - to_date('2009-10-01', 'yyyy-mm-dd') from dual
ma questo restituisce un intervallo e non sono riuscito a lanciarlo su un numero intero.
Modifica: apparentemente in 10g, restituisce il numero di giorni come intero.
Soluzione 2
L'ho capito da solo. Ho bisogno
select extract(day from sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) from dual
Altri suggerimenti
O avresti potuto farlo:
select trunc(sysdate) - to_date('2009-10-01', 'yyyy-mm-dd') from dual
Questo restituisce un NUMERO di giorni interi:
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)
Puoi provare a usare:
select trunc(sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) as days from dual
Funzionerà e mi sono messo alla prova.
Dà differenza tra sysdate e la data recuperata dalla colonna ammessa
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
-
Giorni interi tra la fine del mese e l'inizio di oggi, incluso l'ultimo giorno del mese:
SELECT LAST_DAY (TRUNC(SysDate)) - TRUNC(SysDate) + 1 FROM dual
-
Giorni tra l'ora esatta di utilizzo:
SELECT SysDate - TO_DATE('2018-01-01','YYYY-MM-DD') FROM dual
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow