بتاريخ: 17 مارس 200916 سنة comment_151445 السلام على اهل السلام ارجو المساعدة لمن يستطيع ..لم افهم ماذا تفعل الفانكشن truncوهذه امثله عليهاtrunc(to_date('22-AUG-03'), 'YEAR') would return '01-JAN-03' trunc(to_date('22-AUG-03'), 'Q') would return '01-JUL-03' trunc(to_date('22-AUG-03'), 'MONTH') would return '01-AUG-03' trunc(to_date('22-AUG-03'), 'DDD') would return '22-AUG-03' trunc(to_date('22-AUG-03'), 'DAY') would return '17-AUG-03' اتمنى الرد بأسرع وقت ممكن تقديم بلاغ
بتاريخ: 17 مارس 200916 سنة comment_151473 السلام عليكم...بداية يجب فهم الفرق بين Trunc و RoundRound تقرب و تقتطع (تصفر الباقي)Trunc لا تقرب فقط تقتطع 1* select round(567.89,-2) from dual ROUND(567.89,-2) ---------------- 600 بالنسبة للـ -2 يحدد الخانة التي أريد تقريبها حسب الخانة التي تسبقها .وفي المثال سوف يقرب المئات حسب العشرات و يصفّر باقي الخانات و بما أن الأرقام العشرية الصفرية لا تؤثر على النتيجة تحذف .بالنسبة للترقيم : أول خانة على يسار الفاصلة (الآحاد) تحدد بـ 0و العشرات -1 و المئات -2 و هكذا....أما على يمين الفاصلة فتحدد بـ 1 و 2 و 3 و هكذا.... و تتم عملية التقريب في حال كانت الخانة التي أريد المقارنة معها أكبر أو تساوي 5و في مثالنا : سوف يقارن مع الـ 6 و تتم عملية التقريب .و منطقياً 567 هي أقرب إلى 600 من الـ 500بينما 549 هي أقرب إلى 500 SQL> select trunc(567.89,-2) from dual; TRUNC(567.89,-2) ---------------- 500 أما في Trunc يقوم دائماً بالإقتطاع (تصفير باقي الخانات)هذا ما يتم مع الأرقام في كلتا الحالتين أما مع التواريخ فالحل مشابه تماماً . SQL> select to_char(trunc(to_date('22-AUG-03'), 'YEAR'),'dd mm yyyy hh:mi:ss') from dual; TO_CHAR(TRUNC(TO_DA ------------------- 01 01 2003 12:00:00 هنا سوف يقوم بالاقتطاع حسب السنة دون تقريب , لذلك سوف يقوم فقط بتصفير كافة الأجزاء التي تسبق السنة .JAN هو أول شهر01 هو أول يوم12 هي أول ساعة في اليوم SQL> select to_char(round(to_date('22-AUG-03'), 'YEAR'),'dd mm yyyy hh:mi:ss') from dual; TO_CHAR(ROUND(TO_DA ------------------- 01 01 2004 12:00:00 بينما في هذه الحالة قام بتقريب السنة حسب الشهر و هنا الشهر 7 وهو أكبر أو يساوي النصف(6) لذلك قام بالتقريب و تصفير باقي الأجزاء (الشهر - اليوم - الساعة)سوف أشرح باقي الأمثلة بشكل موجز : trunc(to_date('22-AUG-03'), 'Q') would return '01-JUL-03' بما أن AUG هو في الربع الثالث سيتم الرجوع إلى أول شهر في هذا الربع وهو JULمن الشهر 1 إلى 3 الربع الأولمن الشهر 4 إلى 6 الربع الثانيمن الشهر 7 إلى 9 الربع الثالثمن الشهر 10 إلى 12 الربع الرابع trunc(to_date('22-AUG-03'), 'MONTH') would return '01-AUG-03' سيتم الرجوع إلى أول يوم في الشهر trunc(to_date('22-AUG-03'), 'DDD') would return '22-AUG-03' لا معنى لها , لأن DDD هو رقم اليوم من السنة trunc(to_date('22-AUG-03'), 'DAY') would return '17-AUG-03' سيتم الرجوع إلى أول يوم في الأسبوعآسف عل إطالة ...بس هيك سؤال بدو شرح طويل...أنا جاهز للإعادة تقديم بلاغ
بتاريخ: 17 مارس 200916 سنة كاتب الموضوع comment_151476 ماشاء الله عليك .. فهمتها .. تسلم وفي ميزان حسناتك ان شاء اللهشكرا على الشرح المفصل تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.