Sql 如何在Oracle 11g中获取两个日期之间的天数?
我试图在Oracle11g中找到两个日期之间的整数天数 我可以通过这样做来接近你Sql 如何在Oracle 11g中获取两个日期之间的天数?,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我试图在Oracle11g中找到两个日期之间的整数天数 我可以通过这样做来接近你 select sysdate - to_date('2009-10-01', 'yyyy-mm-dd') from dual 但这会返回一个间隔,我还没有成功地将其转换为整数 编辑:显然,在10g中,它以整数形式返回天数。我自己计算出来的。我需要 select extract(day from sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) from dual 您可
select sysdate - to_date('2009-10-01', 'yyyy-mm-dd') from dual
但这会返回一个间隔,我还没有成功地将其转换为整数
编辑:显然,在10g中,它以整数形式返回天数。我自己计算出来的。我需要
select extract(day from sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) from dual
您可以尝试使用:
select trunc(sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) as days from dual
或者你也可以这样做:
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)
这将起作用,我已经对自己进行了测试。
它给出了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
- 从月底到今天开始的完整天数,包括月的最后一天:
SELECT LAST_DAY (TRUNC(SysDate)) - TRUNC(SysDate) + 1 FROM dual
- 使用精确时间之间的天数:
SELECT SysDate - TO_DATE('2018-01-01','YYYY-MM-DD') FROM dual