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


تابع ()ISDATE در SQL Server

تابع ()ISDATE در SQL Server
برای بررسی معتبر بودن تاریخ در SQL Server می توانید از تابع ISDATE استفاده کنید. تابع ISDATE بررسی می کند که مقدار، یک date یا Time و یا datetime است و در مورد datetime2 این تابع کاربرد ندارد و اگر مقداری از نوع datetime2 به این تابع پاس دهید، مقدار 0 بر می گرداند که نشان از نامعتبر بودن پارامتر دارد.

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



ISDATE ( expression )

Expression در واقع همان مقداری تاریخ و زمان است که بررسی می شود.
لطفا به اسکریپت ساده زیر دقت کنید:

SELECT ISDATE('2000-01-01') AS Result;

+----------+
| Result |
|----------|
| 1 |
+----------+

همانطور که مشاهده می کنید، در خروجی مقدار 1 برگردانده شد و این نشان از معتبر بودن پارامتر پاس داده شده به ISDATE دارد. اگر مقدار غیرمعتبر یا date time2 به این تابع پاس دهید، در خروجی مقدار 0 را دریافت خواهید کرد. لطفا به اسکریپت زیر دقت کنید:

SELECT ISDATE('2000-01-01 00:00:00.0000000') AS Result;

+----------+
| Result |
|----------|
| 0 |
+----------+

برای استفاده از مقدار برگشتی می توانید از دستور شرطی استفاده کنید(به جای 0 و یا 1، عبارات دیگری در خروجی نمایش داده شوند). مثلا در مثال زیر، به جای 0 مقدار Invalid Date و به جای 1 مقدار Valid Date در خروجی نمایش داده خواهد شد.

IF ISDATE('2000-01-01') = 1
PRINT 'Valid Date'
ELSE
PRINT 'Invalid Date';

Valid Date

مقدار برگشتی ISDATE به تنظیمات LANGUAGE و DATEFORMAT شما بستگی دارد. در مثال زیر ، بسته به تنظیمات LANGUAGE، همان مقدار می تواند نتایج مختلفی را برگرداند.

SET LANGUAGE British;
SELECT ISDATE('20/01/2000') AS '20/01/2000 in British';

Changed language setting to British.
+-------------------------+
| 20/01/2000 in British |
|-------------------------|
| 1 |
+-------------------------+

در مثال فوق، زبان British انتخاب شد و خروجی 1 شد و اگر US به عنوان زبان انتخاب شود، خروجی متفاوت خواهد شد:

SET LANGUAGE us_english;
SELECT ISDATE('20/01/2000') AS '20/01/2000 in us_english';

Changed language setting to us_english.
+----------------------------+
| 20/01/2000 in us_english |
|----------------------------|
| 0 |
+----------------------------+

فرمت انگلیسی از dd/MM/yyyy و آمریکایی از MM/dd/yyy استفاده می کند و به همین دلیل در انگلیسی مقدار 1 و در آمریکایی مقدار 0 در یک کوئری ثابت، در Result برگردانده شد.
همانطور که گفته شد ، مقدار برگشتی ISDATE نیز به تنظیمات DATEFORMAT شما هم بستگی دارد. در مثال زیر بسته به تنظیمات DATEFORMAT، خروجی در یک مثال ثابت می تواند متفاوت باشد.

SET DATEFORMAT dmy;
SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is dmy';

+--------------------------------------+
| 20/01/2000 while DATEFORMAT is dmy |
|--------------------------------------|
| 1 |
+--------------------------------------+

SET DATEFORMAT mdy;
SELECT ISDATE('20/01/2000') AS '20/01/2000 while DATEFORMAT is mdy';

+--------------------------------------+
| 20/01/2000 while DATEFORMAT is mdy |
|--------------------------------------|
| 0 |
+--------------------------------------+


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

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

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


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