代码之家  ›  专栏  ›  技术社区  ›  Brian Ramsay

如何获取Oracle11g中两个日期之间的天数?

  •  28
  • Brian Ramsay  · 技术社区  · 16 年前

    我试图在Oracle11g中找到两个日期之间的整数天数。

    我可以靠做接近

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

    但这会返回一个间隔,我还没有成功地将其转换为整数。

    编辑:显然在10g中,这将以整数形式返回天数。

    5 回复  |  直到 7 年前
        1
  •  38
  •   Tony Andrews    16 年前

    或者你可以这样做:

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

    这将返回整个天数:

    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)
    
        2
  •  15
  •   Brian Ramsay    16 年前

    我自己想出来的。我需要

    select extract(day from sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) from dual
    
        3
  •  4
  •   SchmitzIT Mitch    13 年前

    您可以尝试使用:

    select trunc(sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) as days from dual
    
        4
  •  1
  •   Akki    13 年前

    我已经测试过了。
    它给出了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
    
        5
  •  0
  •   Stephen Rauch Afsar Ali    7 年前
    • 月底到今天开始之间的完整天数,包括月的最后一天:

      SELECT LAST_DAY (TRUNC(SysDate)) - TRUNC(SysDate) + 1 FROM dual
      
    • 使用确切时间之间的天数:

      SELECT SysDate - TO_DATE('2018-01-01','YYYY-MM-DD') FROM dual
      
    推荐文章