apexrad-bug

 

باگ تاریخ شمسی در دیتابیس اوراکل

 

NLS_CALENDAR اوراکل بصورت Persian تنظیم نشده است. هر بار که بخواهیم اختلافی را بدست آوریم و یا اینکه ماه را کم و زیاد کنیم ملاک عملکردش همان میلادی می باشد. مخصوصا وقتی بخواهیم اختلاف زمانی را بدست آوریم که بین سال کبیسه میلادی می باشد.
سال شمسی دارای ۳۶۵ روز می باشد و در  سالهای کبیسه ، معادل ۳۶۶ روز هست.
در این خصوص چند سال پیش سوالی را در فروم اوراکل مطرح کردم که نشان دهنده همین موضوع می باشد
select To_DATE(TO_CHAR(to_date('1390/10/30','yyyy/mm/dd'),'YYYY/MM/DD','nls_calendar=persian'),'YYYY/ MM/DD','nls_calendar=persian') - To_DATE(TO_CHAR(to_date('1389/11/01','yyyy/mm/dd'),'YYYY/MM/ DD','nls_calendar=persian'),'YYYY/MM/DD','nls_calendar=persian') dd from dual
The Result = 364
همانطور که مشاهده می کنید در دیتابیس اوراکل تعداد روزهای یکسال رو برابر 364 روز برگردانده است. علت آن هم این است که این تاریخ ها بین سال کبیسه میلادی قرار گرفته است.
Oracle Forum: https://community.oracle.com/message/12726061#12726061

 

5/5 - (1 امتیاز)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این قسمت نباید خالی باشد
این قسمت نباید خالی باشد
لطفاً یک نشانی ایمیل معتبر بنویسید.

keyboard_arrow_up
Oracle APEX Capabilities (OAC)