خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


استفاده از تابع () DATEDIFF_BIG در SQL Server

استفاده از تابع () DATEDIFF_BIG در SQL Server
در این پست کوتاه، در مورد تابع DATEDIFF_BIG در SQL Server صحبت خواهیم کرد. اگر بخواهید بدانید که مثلا هزار سال چند میلی ثانیه می شود، با خطا مواجه خواهید شد. اگر انتظار دارید مقدار برگشتی واقعاً بزرگ باشد، در SQL Server می توانید از تابع DATEDIFF_BIG به جای تابع DATEDIFF استفاده کنید. به این دلیل که DATEDIFF یک خروجی از نوع int را برمی گرداند و result برای کنترل آن نوع داده بسیار بزرگ است. از طرف دیگر تابع DATEDIFF_BIG خروجی ای از نوع bigint را بر میگرداند. به این معنی که می توانید از آن برای بازگرداندن مقادیر بسیار بزرگتر استفاده کنید. به عبارت دیگر ، شما می توانید با طیف وسیعی از تاریخ ها با استفاده از این تابع کار کنید.

سیستم یکپارچۀ سازمانی راهکار
غیر از این ، هیچ تفاوتی بین این دو تابع وجود ندارد. در ادامه با مثال هایی در مورد تابع DATEDIFF_BIG را خواهید دید و با نحوه کار و استفاده از آن آشنا خواهید شد. Syntax استفاده از آن به فرم زیر می باشد:



DATEDIFF_BIG ( datepart , startdate , enddate )

در اسکریپت فوق، datepart تاریخی که می خواهید مقایسه یا محاسبه شود و startdate شروع تاریخ و enddate تاریخ پایان است. تابع مذکور startdate را از enddate کم می کند. نحوه کار به این صورت است که شمارش (به عنوان یک عدد صحیح بزرگ ) از بین تاریخ معین شده را که بین تاریخ شروع و تاریخ پایان مشخص شده اند برمی گرداند.این دقیقاً همان Syntax ای است که برای تابع DATEDIFF هم استفاده می شود.
لطفا به مثال زیر دقت کنید:

SELECT DATEDIFF_BIG(day, '0001-01-01', '9002-01-01') AS Result;

استفاده از تابع () DATEDIFF_BIG در SQL Server
در مثال فوق حتی از تابع DATEDIFF هم میتوانستید استفاده کنید چرا که Result در محدوده دیتاتایپ int قرار دارد.
در مثال زیر، اختلاف قسمتهای مختلف تاریخ را از دو تاریخ مشاهده خواهیم کرد. ابتدا دو متغیر معرفی شده و هر کدام را با تاریخ جدا مقداردهی می کنیم(از تابع DATEADD برای اضافه کردن 1000 سال به تاریخ اول استفاده شده است).

DECLARE @date1 datetime2 = '2000-01-01 00:00:00.0000000';
DECLARE @date2 datetime2 = DATEADD(year, 1000, @date1);
SELECT
DATEDIFF_BIG( year, @date1, @date2 ) AS Years,
DATEDIFF_BIG( quarter, @date1, @date2 ) AS Quarters,
DATEDIFF_BIG( month, @date1, @date2 ) AS Months,
DATEDIFF_BIG( week, @date1, @date2 ) AS Weeks,
DATEDIFF_BIG( dayofyear, @date1, @date2 ) AS DayOfYear,
DATEDIFF_BIG( day, @date1, @date2 ) AS Days;



+---------+------------+----------+---------+-------------+--------+
| Years | Quarters | Months | Weeks | DayOfYear | Days |
|---------+------------+----------+---------+-------------+--------|
| 1000 | 4000 | 12000 | 52178 | 365243 | 365243 |
+---------+------------+----------+---------+-------------+--------+

البته در این مثال هم می توانستیم از تابع DATEDIFF استفاده کنیم چون خروجی ها همه در محدوده int هستند.

در مثال زیر ساعت ها ، دقیقه ها و ثانیه ها را بین دو تاریخ مشاهده خواهیم کرد:

DECLARE @date1 datetime2 = '2000-01-01 00:00:00.0000000';
DECLARE @date2 datetime2 = DATEADD(year, 1000, @date1);
SELECT
DATEDIFF_BIG( hour, @date1, @date2 ) AS Hours,
DATEDIFF_BIG( minute, @date1, @date2 ) AS Minutes,
DATEDIFF_BIG( second, @date1, @date2 ) AS Seconds;

استفاده از تابع () DATEDIFF_BIG در SQL Server
در این مثال دیگر نمی توانستیم که از تابع DATEDIFF استفاده کنیم چرا که در خروجی خطا دریافت می کردیم. خروجی اسکریپت فوق بزرگتر از محدود int می باشد.
در مثال زیر، خروجی بر حسب میلی ثانیه ، میکرو ثانیه و نانو ثانیه خواهد بود:

DECLARE @date1 datetime2 = '2000-01-01 00:00:00.0000000';
DECLARE @date2 datetime2 = DATEADD(year, 100, @date1);
SELECT
DATEDIFF_BIG( millisecond, @date1, @date2 ) AS Milliseconds,
DATEDIFF_BIG( microsecond, @date1, @date2 ) AS Microseconds,
DATEDIFF_BIG( nanosecond, @date1, @date2 ) AS Nanoseconds;

استفاده از تابع () DATEDIFF_BIG در SQL Server

نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز