我正在尝试在Oracle 11g中找到两个日期之间的整数天数。
我可以通过以下方式接近:
select sysdate - to_date('2009-10-01', 'yyyy-mm-dd') from dual
但是这返回的是一个时间间隔,我尝试将其转换为整数但未成功。
编辑:显然在10g中,这会返回天数作为一个整数。
select sysdate - to_date('2009-10-01', 'yyyy-mm-dd') from dual
但是这返回的是一个时间间隔,我尝试将其转换为整数但未成功。
编辑:显然在10g中,这会返回天数作为一个整数。
或者你可以这样做:
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)
我自己解决了。我需要
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
Full days between end of month and start of today, including the last day of the month:
SELECT LAST_DAY (TRUNC(SysDate)) - TRUNC(SysDate) + 1 FROM dual
Days between using exact time:
SELECT SysDate - TO_DATE('2018-01-01','YYYY-MM-DD') FROM dual
这个可以运行,我已经测试过了。
它会给出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 TO_DATE(SysDate,'YYYY-MM-DD') - TO_DATE('2018-01-01','YYYY-MM-DD') FROM dual