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

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

صورة
- - - - -

ممكن حد يشرحلى كيفية استخدام الفانكشن المتداخلة؟


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

#1 mohooo81

mohooo81

    عضو نشط

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

تاريخ المشاركة 05 August 2008 - 02:42 PM

لو سمحتم عايز اعرف اية هوا
intervel year to month
interval day to scond

عبارة عن اية وباستخدمهم امتى مع مثاااال والحاجات اللى زى time zone

وطبعا الفانكش المتداخلة ازاى اعملها ومغلطش فيها مع امثلة طبعا؟؟
مالا يدرك كلة لا يترك كلة

#2 hanyfreedom

hanyfreedom

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

  • المجموعة الماسية
  • 1,481 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Chess , Sudoku

تاريخ المشاركة 06 August 2008 - 04:32 AM

بالنسبة لل Interval فشوف هذا الموضوع :-

http://www.araboug.o...showtopic=28403


أما ال TimeZone فهى ساعات اليوم التى تقاس بدوران الأرض ، و الوقت يقاس بمكان وجودك على الأرض ، فمثلاً عندما يكون ظهراً فى مدينة ال Greenwich بدولة England - بريطانيا - فأنه يكون ليلاً فى ال the international date line ، و الكرة الأرضية مقسمة على 24 منطقة وقتية ( اى التى تدعى Time Zones و هى المتعارف عليها لغوياً و التى سوف نستخدمها فى هذا الشرح ) أى منطقة وقتية لكل ساعة من ساعات اليوم ، و بمعنى أدق فالمنطقة الوقتية هى منطقة لجزء من 24 جزء من الكرة الأرضية .... كما فى هذه الصورة :-

صورة

أول بداية وقت الظهر فى ال Greenwich, England يعرف ب Greenwich Mean Time و هو أختصار شهير جداً ل GMT ، و ال GMT هو مقياس معيارى لل Time Zone ...... و بصفة عامة فأن ال Time Zone هو خط الطول الذى يقاس به الوقت للمكان اللى انت فيه .

و يمكنك التحكم فى ال Time Zone بأستخدام ALTER SESSION لتغيره لوضع من 4 أوضاع ....... كالتالى :-

An absolute offset

ALTER SESSION SET TIME_ZONE = '-05:00';


Database time zone
ALTER SESSION SET TIME_ZONE = dbtimezone;


OS local time zone
ALTER SESSION SET TIME_ZONE = local;


A named region
ALTER SESSION SET TIME_ZONE = 'America/New_York';



يعنى مثلاً ظبط الوقت عندك بحيث يبقى ذى ما الوقت فى مصر :-

ALTER SESSION SET TIME_ZONE = '+2:0';


أتأكد بالكود ده :-

SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;


فى DataType أسمها TIMESTAMP هى Date بس بتظهر الوقت بدقة متناهية ، أستخدمها لمعرفة وقت ال TimeZone عندك :-

SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL;


و لمعرفة قيمة ال TimeZone بتاعة ال Database أكتب التالى :-

SELECT DBTIMEZONE FROM DUAL;


و لمعرفة قيمة ال TimeZone لل Session اللى انت عليه ، أكتب :-

SELECT SESSIONTIMEZONE FROM DUAL;



بالنسبة لل :-

الفانكش المتداخلة


دى سهلة اوى ..... كل ما فى الموضوع ، انك تنظر للكود من جوه مش من بره .... بمعنى :-

SELECT REPLACE (SUBSTR (CONCAT (first_name, last_name), 3, 6), 'i', '@$^#()@') FROM employees;


هنا لما تيجى تبص للكود ، بص الأول على ال :-
CONCAT (first_name, last_name)
لأن دى اخر حاجه من جوه ، لأن الاول هو ال REPLACE و تانى فانكشن ال SUBSTR و تالت واحده والاخيره هى ال CONCAT
و الفانكشن الاخيرة بتربط ما بين الاسم الاول و الاسم الاخير .
اما الفانكشن اللى فى النص اللى هى تانية واحده :-
SUBSTR (CONCAT (first_name, last_name), 3, 6)
فهى بتجيب الناتج بتاع الفينكشن اللى جوه - اللى هو هنا الكلمة الناتجة عن ضم الاسم الاول للموظف مع اسمه الاخير - و من ثم أظهار فقط من اول الحرف الثالث الى الحرف التاسع ، لأن الرقم الاول 3 يعنى ابتدى الاظهار من الحرف الثالث و الرقم الثانى 6 يعنى خد ال 6 أحرف اللى بعد الحرف الثالث .
اما الفينكشن الاولى اللى هى :-
REPLACE (SUBSTR (CONCAT (first_name, last_name), 3, 6), 'i', '@$^#()@')
فهى بتستبدل ناتج الفينكشن الثانية - SUBSTR - الحرف i بمجموعة هذه الرموز @$^#()@ ....... كل الفكرة انك تحلل الكود او تبنيه من الجوه الاول و بعد كده أطلع لبره .


أتمنى أكون وفقت فى توصيل المعلومة لك ....... مع تمنياتى لك بالتوفيق