الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

فائدة الفانكشنtrunc

Featured Replies

بتاريخ:

السلام على اهل السلام

ارجو المساعدة لمن يستطيع ..
لم افهم ماذا تفعل الفانكشن 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'


اتمنى الرد بأسرع وقت ممكن :(

بتاريخ:

السلام عليكم...

بداية يجب فهم الفرق بين Trunc و Round
Round تقرب و تقتطع (تصفر الباقي)
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'


سيتم الرجوع إلى أول يوم في الأسبوع


آسف عل إطالة ...
بس هيك سؤال بدو شرح طويل...أنا جاهز للإعادة

بتاريخ:
  • كاتب الموضوع

ماشاء الله عليك .. فهمتها .. تسلم وفي ميزان حسناتك ان شاء الله

شكرا على الشرح المفصل :(

  • بعد 1 شهر...
بتاريخ:

يسلموا على الرد ..الصراحه الشرح أفادني ;)

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

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

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

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

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.