استعلام أوراكل البسيط: الحرفي لا يتطابق مع سلسلة التنسيق
-
28-10-2019 - |
سؤال
أريد تنفيذ وظيفة بسيطة في Oracle.يتم تعريف التوقيع على النحو التالي: Genacodicetagpre
يجب أن أكون قادرًا على تنفيذه باستخدام: Genacodicetagpre
ولكن عند كتابة "newcaselistforvalidation ('2010-01-01'، '2011-01-01'، 100)" ، أحصل على:
Genacodicetagpreلقد بحثت في Google قليلاً ويبدو أنني لا أستطيع كتابة التاريخ بالتنسيق الصحيح.هل يمكن لأي شخص مساعدتي؟
المحلول
استعلام NLS_PARAMETERS في Oracle- ستتمكن بعد ذلك من معرفة التنسيق الذي يقبل قاعدة البيانات الخاصة بك التواريخ به.
ومع ذلك ، عادةً ما أستخدم الوظيفة to_date ():
Genacodicetagpreفي المملكة المتحدة لإدخال التواريخ.
نصائح أخرى
يتمثل أحد البدائل للوظيفة to_date () في استخدام التنسيق القياسي ANSI للقيم الحرفية DATE أو TIMESTAMP:
Genacodicetagpreيتم دائمًا تحديد التاريخ والوقت باستخدام قواعد ISO (YYYY-MM-DD وتنسيق 24 ساعة للوقت)
يعمل هذا أيضًا على الكثير من نظم إدارة قواعد البيانات الأخرى (المتوافقة مع المعيار).
Genacodicetagpreمن الأفضل عدم الاعتماد على قيمة معينة في إعدادات NLS_PARAMETERS ، لأن هذا سيجعل وظيفتك تتعطل في المحيط مع NLS_DATE_FORMAT آخر.
سأحدد تنسيق التاريخ صراحةً في وظيفتك كما هو مقترح في الإجابة أعلاه
أدخل في الجدول tblDate (تاريخ البدء) القيم (20 يونيو 2013) ؛ إذا قمت بتغيير عدد صحيح للشهر إلى سلسلة "DD-MON-YYYY" تعمل كسلسلة بيانات صالحة دون الحاجة إلى تهيئتها بمعرف التاريخ.