我正在尝试在Oracle 11g中找到两个日期之间的整数天数。
我可以通过
来接近select sysdate - to_date('2009-10-01', 'yyyy-mm-dd') from dual
但是这会返回一个间隔,并且我没有成功将其转换为整数。
编辑:显然在10g中,这将以整数形式返回天数。
答案 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