web-dev-qa-db-ja.com

Oracle 11gで2つの日付間の日数を取得するにはどうすればよいですか?

Oracle 11gで2つの日付間の整数の日数を見つけようとしています。

することで親しくなります

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

しかし、これは間隔を返し、これを整数にキャストできませんでした。

編集:明らかに10gでは、これは整数として日数を返します。

29
Brian Ramsay

自分で考え出した。私は欲しい

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

または、これを行うこともできます。

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

これは、NUMBER日間を返します。

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

以下を使用して試すことができます。

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

これは、自分でテストしたことで機能します。
sysdateと、列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
  • 月末から今日の始まりまでの終日(月末を含む):

    SELECT LAST_DAY (TRUNC(SysDate)) - TRUNC(SysDate) + 1 FROM dual
    
  • 正確な時間を使用する間の日数:

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