ما الفرق بين قناع التاريخ "yy" و "rr" الخاص بـ Oracle؟
سؤال
مثال:
select ename from emp where hiredate = todate('01/05/81','dd/mm/yy')
و
select ename from emp where hiredate = todate('01/05/81','dd/mm/rr')
إرجاع نتائج مختلفة
المحلول
يسمح لك YY باسترداد رقمين فقط من العام ، على سبيل المثال ، 99 في عام 1999.يتم تعيين الأرقام الأخرى (19) تلقائيًا إلى القرن الحالي.يقوم RR بتحويل السنوات المكونة من رقمين إلى سنوات مكونة من أربعة أرقام عن طريق التقريب.
يتم تخزين 50-99 كـ 1950-1999 ، ويتم تخزين التواريخ التي تنتهي في 00-49 كـ 2000-2049.يقبل RRRR مدخلات مكونة من أربعة أرقام (على الرغم من أنها غير مطلوبة) ، وتحول تواريخ من رقمين كما يفعل RR.يقبل Yyyy مدخلات من 4 أرقام لا يقومون بتحويل أي تاريخ
بشكل أساسي، المثال الأول الخاص بك سيفترض أن 81 هو 2081 بينما المثال RR يفترض 1981.لذلك يجب ألا يُرجع المثال الأول أي صفوف لأنك على الأرجح لم تقم بتعيين أي أشخاص بعد 1 مايو 2081 حتى الآن :-)
نصائح أخرى
تجربتي الأخيرة مع أوراكل كانت منذ فترة طويلة
اه، هل كان ذلك قبل عام 2000؟:ص
...
هل ستفترض دائمًا 19xx؟
وفقا لمصدرك, ، نحصل على السيناريوهات التالية:
USING
ENTERED
STORED
SELECT of date column
YY
22-FEB-01
22-FEB-1901
22-FEB-01
YYYY
22-FEB-01
22-FEB-0001
22-FEB-0001
RR
22-FEB-01
22-FEB-2001
22-FEB-01
RRRR
22-FEB-01
22-FEB-2001
22-FEB-2001
/ النائب
التوافق Y2K.rr يفترض أن 01 هو 2001، yy يفترض أن 01 هو 1901
يرى: http://www.oradev.com/oracle_date_format.jsp
يحرر:اللعنة! جذع مايكل "الأصابع السريعة". اسبقني!
/ النائب
يعرض RR أربعة أرقام مثل 1999 أو 2015 (إذا كان أقل من 49، فسيتم اعتباره القرن العشرين)
حول RR أو RRRR
عندما نقوم بإدخال التواريخ المكونة من رقمين (أي:09/أكتوبر/15) ثم قد يغير Oracle القرون تلقائيًا وبالتالي فإن الحل هو 4 تواريخ.ولكن تم تقديم إصدار من 4 أرقام في بعض الإصدارات الحديثة ، وبالتالي كانت حلول هذه المشكلة في الإصدارات السابقة RR
أو RRRR
.لكن لاحظ أنه يعمل فقط مع TO_DATE()
وظيفة ولكن ليس مع TO_CHAR()
وظيفة.
عندما يتم إجراء عمليات الإدراج/التحديثات في التواريخ، يجب علينا دائمًا توضيح التاريخ الحالي الذي يعمل على مدار الساعة فيما يتعلق بترجمة التاريخ نظرًا لأن Oracle تجري كل ترجمة للتاريخ عن طريق الاتصال بالخادم.
من أجل الحفاظ على الاتساق بين القرون، فمن الأفضل دائمًا تنفيذ ترجمة التاريخ بأربعة أرقام.
حول YY أو YYYY
يقبل التواريخ ولكن ليس لديه وظيفة لتغييرها تلقائيًا.
توضح هذه الصورة السلوك عند إدخال تاريخ مكون من رقمين (أي:09/أكتوبر/15)
يشير RR إلى ما بعد عام 1990 ويفترض yy أن 90 هو عام 2090.... كما نحن في العام الحالي،...