كيف يمكنني الحصول على عدد الأيام بين 2 التواريخ في أوراكل 11g?
سؤال
أنا أحاول العثور على عدد صحيح من الأيام بين تاريخين في أوراكل 11g.
يمكنني الحصول على وثيقة من خلال القيام
select sysdate - to_date('2009-10-01', 'yyyy-mm-dd') from dual
ولكن هذا يعود فاصل و لم تكن ناجحة صب هذا إلى عدد صحيح.
تحرير:على ما يبدو في 10g هذا إرجاع عدد الأيام عدد صحيح.
المحلول 2
وأنا أحسب أنه من نفسي. أحتاج
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') 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 trunc(sysdate - to_date('2009-10-01', 'yyyy-mm-dd')) as days 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 LAST_DAY (TRUNC(SysDate)) - TRUNC(SysDate) + 1 FROM dual
أيام بين استخدام الوقت المحدد:
SELECT SysDate - TO_DATE('2018-01-01','YYYY-MM-DD') FROM dual
لا تنتمي إلى StackOverflow