تفاوتهای تاریخ Dates بین اکسل و DAX
DAX از تاریخهایی که از سال ۱۹۰۰ شروع میشوند پشتیبانی میکند و زمانی که در حال آموزش DAX هستم، همیشه توضیح میدهم که DAX تاریخها را مانند اکسل مدیریت میکند، که دلیل وجود این محدودیتها نیز همین است. در واقع این موضوع درست است – اما امروز در پاسخ به یک نظر متوجه شدم که میتوانم این موضوع را بهتر توضیح دهم.
توجه: آنچه در ادامه میآید احتمالاً در کار روزمره شما کاربرد چندانی نخواهد داشت. اگر به خواندن این مطلب ادامه دهید، صرفاً از روی کنجکاوی خواهد بود.
DAX یک تاریخ را به صورت یک عدد اعشاری ذخیره میکند، که بخش صحیح آن تعداد روزهای گذشته از ۳۰ دسامبر ۱۸۹۹ را نشان میدهد و بخش اعشاری آن کسری از یک روز را مشخص میکند (۶ ساعت = ۰.۲۵، ۱۲ ساعت = ۰.۵۰ و به همین ترتیب).
اکسل نیز همین کار را انجام میدهد، اما بین DAX و اکسل تفاوتی در نحوه نمایش روزهای بین ۳۰ دسامبر ۱۸۹۹ و ۱ مارس ۱۹۰۰ وجود دارد.
اکسل عدد ۱ را به روز اول ژانویه ۱۹۰۰ اختصاص میدهد. اگر تلاش کنید عدد ۰ را به عنوان تاریخ در اکسل نمایش دهید، تاریخ غیرموجود «۰ ژانویه ۱۹۰۰» را دریافت خواهید کرد.
DAX عدد ۱ را به روز ۳۱ دسامبر ۱۸۹۹ نسبت میدهد. چرا این تفاوت وجود دارد؟
زیرا پیادهسازی اولیه نرمافزار Lotus 1-2-3 دارای یک اشکال بود و سال ۱۹۰۰ را به اشتباه به عنوان یک سال کبیسه در نظر گرفته بود که شامل ۲۹ فوریه ۱۹۰۰ میشد. در حالی که سال ۱۹۰۰ در واقع سال کبیسه نبود و تاریخهای قبل از ۲ مارس ۱۹۰۰ در Lotus 1-2-3 به اشتباه نمایش داده میشدند.
برای حفظ سازگاری کامل با Lotus 1-2-3، توسعهدهندگان اکسل تصمیم گرفتند همان اشکال را در اکسل نیز پیادهسازی کنند – ما در مورد رویدادهایی صحبت میکنیم که در قرن گذشته و قبل از پیدایش اینترنت اتفاق افتادهاند.
پیادهسازی اکسل از همان نمایش استفاده شده در Lotus 1-2-3 برای تاریخهای بین ۱ ژانویه ۱۹۰۰ تا ۲۸ فوریه ۱۹۰۰ استفاده میکند – که با اعداد بین ۱ تا ۵۹ نمایش داده میشوند.
مقدار ۶۰ مربوط به روز غیرموجود ۲۹ فوریه ۱۹۰۰ بود که امروز در اکسل به عنوان ۱ مارس ۱۹۰۰ نمایش داده میشود. با این حال، مقدار ۶۱ نیز به ۱ مارس ۱۹۰۰ اختصاص دارد. بنابراین، در اکسل هر دو مقدار ۶۰ و ۶۱ معادل تاریخ ۱ مارس ۱۹۰۰ هستند.
توسعهدهندگان DAX نگرانی زیادی درباره دادههای موجود در اکسل مربوط به دو ماه اول سال ۱۹۰۰ نداشتند، بنابراین تصمیم گرفتند پیادهسازی متفاوتی داشته باشند.
DAX از بازه ۱ تا ۶۰ برای تاریخهای بین ۳۱ دسامبر ۱۸۹۹ تا ۲۸ فوریه ۱۹۰۰ استفاده میکند. به این ترتیب، ۱ مارس ۱۹۰۰ فقط یک عدد صحیح متناظر در DAX دارد – که ۶۱ است.
نتیجه نهایی این است که تمام تاریخهای در بازه ۱ تا ۶۰ در DAX و اکسل به اندازه یک روز با هم اختلاف دارند. این موضوع فقط زمانی اهمیت پیدا میکند که بخواهید یک عدد را که از اکسل میآید مستقیماً به تاریخ در DAX تبدیل کنید؛ زیرا اگر تاریخها در اکسل به درستی به عنوان تاریخ وارد شوند، در DAX نیز به طور صحیح تبدیل خواهند شد، حتی اگر عدد صحیح زیرساختی آنها متفاوت باشد.
همانطور که در ابتدای مطلب گفتم، دانستن این نکته کاربرد عملی چندانی ندارد، اما اگر روزی برایتان سوال شد که چرا چنین تفاوتی وجود دارد، اکنون پاسخ آن را میدانید. در نهایت، با استفاده از یک عدد منفی، DAX میتواند تاریخهای قبل از سال ۱۹۰۰ را نیز نمایش دهد. با این حال، به نظر نمیرسد که این ویژگی به طور رسمی پشتیبانی شود، بنابراین بهتر است زیاد روی آن حساب باز نکنید.
دیدگاهتان را بنویسید