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

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

سؤال عن الـ Date


4 رد (ردود) على هذا الموضوع

#1 صلاح الثبيتي

صلاح الثبيتي

    عضو

  • الأعضــاء
  • 48 مشاركة

تاريخ المشاركة 11 May 2004 - 11:00 PM

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

عندي View

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


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

#2 Online

Online

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 120 مشاركة

تاريخ المشاركة 12 May 2004 - 01:40 AM

عليكم السلام
انا اقترح انك تسخدم الدالة months_between

where trunc(months_between(solddate,sysdate)) =1

تحياتي
المستحيل حقيقة لا توجد الا في خيال العاجز

turaifm@yahoo.com

#3 صلاح الثبيتي

صلاح الثبيتي

    عضو

  • الأعضــاء
  • 48 مشاركة

تاريخ المشاركة 12 May 2004 - 12:06 PM

السلام عليكم :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
);


#4 صلاح الثبيتي

صلاح الثبيتي

    عضو

  • الأعضــاء
  • 48 مشاركة

تاريخ المشاركة 12 May 2004 - 12:43 PM

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

اتضح ان الكود التالي هو المطلوب و ان شاء الله الناس تستفيد من تجاربنا :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
);


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

#5 hassan

hassan

    مشترك

  • الأعضــاء
  • 182 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 22 May 2004 - 02:06 AM

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

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

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;
)

وللجميع تحياتي
ولكم شكري
أخوكم / حسن

بارك الله فيكم على هذا المنتدى الرائع