الانتقال إلى المحتوى

سؤال عن الـ Date


صلاح الثبيتي

Recommended Posts

السلام عليكم :D

عندي View

CREATE OR REPLACE VIEW summaries AS (
 SELECT iid, iname, idesc, iprice, solddate
   FROM items WHERE solddate+31 < SYSDATE
);



اللي ابغى اسويه اني ابغى اعرض السلع اللي بعتها الشهر الماضي ؟ فالمشكله اني مااعرف كيف اطرح واحد من عدد الشهور لاظهار النتيجه بشكل صحيح .. هل من حل ؟

رابط هذا التعليق
شارك

السلام عليكم :D

مشكور على الرد لكن يوجد توضيح و هو عند عمليه الطرح راح يكون الناتج 1- و ليس 1

فقمت بالتعديل عليه :D

CREATE OR REPLACE VIEW summaries AS (
 SELECT iid, iname, idesc, iprice, solddate
   FROM items WHERE TRUNC(MONTHS_BETWEEN(SYSDATE, solddate)) = 1
);

رابط هذا التعليق
شارك

بعد التعديل على الكود

اتضح ان الكود التالي هو المطلوب و ان شاء الله الناس تستفيد من تجاربنا :D

CREATE OR REPLACE VIEW summaries AS (
 SELECT iid, iname, idesc, iprice, solddate
   FROM items WHERE MONTHS_BETWEEN(ROUND(SYSDATE, 'MONTH'), solddate) <= 1 AND MONTHS_BETWEEN(ROUND(SYSDATE, 'MONTH'), solddate) >= 0
);



طبعاً راح يعطيك البيانات كامله للشهر الفائت بالكامل

رابط هذا التعليق
شارك

  • بعد 2 أسابيع...
بعد التعديل على الكود

اتضح ان الكود التالي هو المطلوب و ان شاء الله الناس تستفيد من تجاربنا  :)

CREATE OR REPLACE VIEW summaries AS (
  SELECT iid, iname, idesc, iprice, solddate
    FROM items WHERE MONTHS_BETWEEN(ROUND(SYSDATE, 'MONTH'), solddate) <= 1 AND MONTHS_BETWEEN(ROUND(SYSDATE, 'MONTH'), solddate) >= 0
);



طبعاً راح يعطيك البيانات كامله للشهر الفائت بالكامل


مرحبا الأخ صلاح
بعد أن جربت كودك النهائي لهذا الموضوع كانت النتائج خطأ عند احتمالات متعددة وضعها أنا كأمثلة
أعتقد الكود يوجد فيه خلل : لو وضعت التاريخ الحالي بعد منتصف الشهر يعني 17/5/2004 مثلا فهو سيقرب ليس لأول الشهر الحالي بل لأول الشهر التالي1/6/2004 ... مما ينتج خطأ في قيمة Round

أعتقد هذا هو الحل :
CREATE OR REPLACE VIEW summaries AS (
SELECT iid, iname, idesc, iprice, solddate
FROM items
WHERE
(to_number(to_char(sysdate,'MM'))-TO_NUMBER(TO_CHAR(solddate,'MM'))=1
AND TO_CHAR(SYSDATE,'YYYY')=TO_CHAR(solddate,'YYYY')
OR(TO_CHAR(solddate,'MM'))='12'
AND TO_CHAR(SYSDATE,'MM')='1'
AND TO_NUMBER(TO_CHAR(SYSDATE,'YYYY'))=TO_NUMBER(TO_CHAR(solddate,'YYYY'))+1;
)

وللجميع تحياتي
ولكم شكري
رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية