如何获取Oracle 11g中两个日期之间的天数?

时间:2009-10-29 19:27:00

标签: sql oracle oracle11g

我正在尝试在Oracle 11g中找到两个日期之间的整数天数。

我可以通过

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

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

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

5 个答案:

答案 0 :(得分:38)

或者你可以这样做:

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)

答案 1 :(得分:15)

我自己想通了。我需要

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

答案 2 :(得分:4)

您可以尝试使用:

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

答案 3 :(得分:1)

这将是我自己测试的工作。
它给出了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

答案 4 :(得分:0)

  • 从月底到今天开始的整天,包括该月的最后一天:

    simple_fields_for
  • 使用确切时间之间的天数:

    SELECT LAST_DAY (TRUNC(SysDate)) - TRUNC(SysDate) + 1 FROM dual