عملکرد () SQL Server GETDATE و موارد استفاده از این تابع

عملکرد () SQL Server GETDATE و موارد استفاده از این تابع

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۲۴ بهمن ۱۴۰۰
آخرین بروزرسانی: ۲۵ آبان ۱۴۰۲
زمان مطالعه: 15 دقیقه
۳.۷
(۳)

مقدمه

این مقاله به بررسی کلی و موارد استفاده از تابع ()SQL Server GETDATE می‌پردازد. این تابع برای برگرداندن تاریخ و زمان فعلی سیستمی که نمونه SQL Server در آن در حال اجرا است، استفاده می‌شود. چندین توابع مرتبط با تاریخ در SQL Server برای نیازهای متمایز مانند SYSDATETIME، CURRENT_TIMESTAMP، و غیره وجود دارد. همه این توابع تاریخ زمان فعلی سیستمی را که SQL Server در آن اجرا می‌شود، برمی‌گرداند. تنها تفاوت داشتن این تعداد زیاد توابع، دقت، طول و مهر زمانی است، مثلاً تا چه اندازه می‌خواهید خروجی زمان تاریخ خود را برگردانید. من خروجی برخی از این توابع تاریخ و زمان را به شما نشان می‌دهم و آنها را با تابع ()SQL Server GETDATE مقایسه می‌کنم.

دوره آموزشی SQL Server ویژه برنامه‌نویسان

در زیر دستور تابع GETDATEآمده است. خروجی این تابع در قالب YYYY-MM-DD hh:mm:ss.mmmm» بازمی‌گردد.

SELECT GETDATE()
GO

تابع SQL Server GETDATE بسیار منعطف است و می‌تواند با توابع مختلف تاریخ و زمان دیگر برای بازگرداندن خروجی در فرمت دلخواه ما استفاده شود. اجازه دهید ابتدا این تابع را با سایر توابع تاریخ زمان موجود در SQL Server در بخش زیر مقایسه کنیم.

مقایسه عملکرد SQL Server GETDATE را با دیگر توابع تاریخ و زمان

همان‌طور که در بالا بیان کردم، SQL Server چندین تابع تاریخ و زمان را برای برگرداندن زمان، تاریخ یا تنها زمان فعلی بر اساس نیاز شما ارائه می‌دهد. اگر می‌خواهید خروجی تاریخ و زمان را در قالب خاصی برگردانید، می‌توانید از هر یک از این توابع که برای نیاز شما مناسب است استفاده کنید.

به مثال زیر نگاهی بیندازید که در آن من خروجی تاریخ و زمان فعلی را با استفاده از توابع مختلف دریافت کرده‌ام. می‌توانید آنها را با یکدیگر مقایسه کنید تا متوجه شوید که یک تابع خاص با چه دقتی خروجی خود را برمی‌گرداند.

SELECT GETDATE() AS [Getdate],
CURRENT_TIMESTAMP AS [Current Timestamp],
SYSDATETIME() AS [Sysdatetime]
GO

خروجی در تصویر زیر نشان‌داده‌شده است. هر سه تابع دارای مهر زمانی (timestamp) یکسانی هستند، اما SYSDATETIME در مقایسه با بقیه دو تابع، دقت کسری بیشتری از ثانیه می‌دهد.عملکرد () SQL Server GETDATE و موارد استفاده از این تابع

می‌توانیم ببینیم مُهر زمانی فعلی که توسط توابع بالا بازگردانده می‌شود دارای قالب خاصی است. اگر بخواهیم تنها تاریخ فعلی سیستم یا فقط زمان سیستم را به دست آوریم، باید از یک تابع دیگر SQL Server CONVERT استفاده کنیم تا فقط تاریخ یا زمان بخشی از خروجی بالا را برگردانیم. من این را در موارد استفاده زیر نشان خواهم داد تا بتوانید طبق نیاز خود از آنها استفاده کنید.

زیر دستورات T-SQL را اجرا کنید تا خروجی خاصی را برگردانید، مثل اینکه می‌خواهیم فقط قسمت تاریخ خروجی بالا را دریافت کنیم. در اینجا، من تمام توابع را به‌عنوان یک پرس‌وجو جداگانه اجرا کرده‌ام، شما می‌توانید آن را در یک پرس‌وجو اجرا کنید، همان‌طور که در مثال بالا انجام دادم.

SELECT CONVERT (Date, GETDATE()) AS [Current Date]
GO
SELECT CONVERT (Date, CURRENT_TIMESTAMP) AS [Current Date]
GO
SELECT CONVERT (Date, SYSDATETIME()) AS [Current Date]
GO

خروجی تاریخ فعلی سیستم را فقط بر اساس سیستم نشان می‌دهد.عملکرد () SQL Server GETDATE و موارد استفاده از این تابع

به طور مشابه، ما می‌توانیم زمان فعلی سیستم را فقط با اجرای پرس‌وجوهای زیر به دست آوریم. همان‌طور که در عبارات زیر نشان‌داده‌شده است، فقط باید «Date» را با «Time» در پرانتز جایگزین کنیم.

SELECT CONVERT (Time, GETDATE()) AS [Current Date]
GO
SELECT CONVERT (Time, CURRENT_TIMESTAMP) AS [Current Date]
GO
SELECT CONVERT (Time, SYSDATETIME()) AS [Current Date]
GO

در اینجا خروجی است که در آن ما می‌توانیم زمان بازگشتی یکسان توسط هر ۳ تابع به جز ثانیه‌های کسری آنها را مشاهده کنیم.عملکرد () SQL Server GETDATE و موارد استفاده از این تابعاگر می‌خواهید همان نتیجه را بگیرید، باید هر ۳ تابع را در یک کوئری اجرا کنید، همان‌طور که در مثال اول انجام دادم. زمان جاری را در طول اجرای عملکرد مربوطه خود ضبط می‌کند و هر دستور یکی پس از دیگری اجرا می‌شود به همین دلیل است که در قسمت کوچکی از ثانیه‌های آنها تفاوت کوچکی وجود دارد.

در زیر اجرای یک تابع در یک اجرای کوئری آمده است و می‌توانیم ببینیم که زمان برای هر ۳ تابع در اینجا یکسان است زیرا آنها تحت یک دسته اجرا می‌شوندعملکرد () SQL Server GETDATE و موارد استفاده از این تابع

در این موارد از تابع ()SQL Server GETDATE استفاده کنید

خروجی کوئری‌های فوق در قالب خاصی برمی‌گردد. فرض کنید می‌خواهید تنها سال، ماه، تاریخ یا روز را برگردانید، پس نمی‌توانید با استفاده از کوئری‌های بالا آن را دریافت کنید. SQL Server توابع کمی را ارائه می‌دهد که می‌توانیم با استفاده از تابع SQL Server GETDATE از آنها برای دریافت نتایج در سطح بسیار عمیق‌تر و جزئی‌تر استفاده کنیم. از این توابع می‌توانیم به: DATENAME، DATEPART، DAY، MONTH، YEAR اشاره کنیم.

حال، بیایید نحوه استفاده از تابع SQL Server GETDATE با توابع مختلف دیگر را موردبحث قرار دهیم.

از تابع GETDATE با توابع DATENAME، DATEPART و DATEADD استفاده کنید

DATENAME و DATEPART توابع SQL Server هستند که همان اطلاعات را اما در قالب متفاوتی برمی‌گردانند. تابع DATENAME تاریخ و زمان مبتنی بر رشته کاراکتر را برمی‌گرداند درحالی‌که تابع DATEPART تاریخ و زمان مبتنی بر عدد صحیح را برمی‌گرداند.

تابع DATEADD به ما کمک می‌کند تا تاریخ زمان فعلی، آینده یا گذشته را بر اساس عدد مشخص شده با نوع ورودی DateTime دریافت کنیم.

در زیر بخش‌هایی از تاریخ و زمان است که می‌توان با استفاده از این توابع برگرداند:

  • Year(سال)
  • Quarter
  • (ماه)Month
  • Day of year
  • Day(روز)
  • Week(هفته)
  • Weekday
  • Hour(ساعت)
  • Minute(دقیقه)
  • Second(ثانیه)
  • Millisecond(میلی‌ثانیه)
  • Microsecond(میکروثانیه)
  • Nanosecond(نانوثانیه)
  • TZoffset
  • ISO_WEEK

هر قسمت تاریخ و زمان مخفف خود را دارد که می‌تواند برای برگرداندن همان خروجی نیز استفاده شود.

در اینجا، من از تابع SQL Server GETDATE به‌عنوان تاریخ مشخصی برای این توابع برای برگرداندن قسمت‌ها یا بخش‌های مختلف مقادیر تاریخ و زمان استفاده می‌کنم.

ELECT DATENAME (YEAR, GETDATE()) AS [Year] ,
DATENAME (QUARTER, GETDATE()) AS [Quarter],
DATENAME (MONTH, GETDATE()) AS [Month],
DATENAME (DayOfYear, GETDATE()) AS [DayOfYear],
DATENAME (DAY, GETDATE()) AS [Day],
DATENAME (WEEK, GETDATE()) AS [Week],
DATENAME (WEEKDAY, GETDATE()) AS [Weekday],
DATENAME (HOUR, GETDATE()) AS [Hour],
DATENAME (MINUTE, GETDATE()) AS [Minute],
DATENAME (SECOND, GETDATE()) AS [Second],
DATENAME (MILLISECOND, GETDATE()) AS [Millisecond],
DATENAME (MICROSECOND, GETDATE()) AS [Microsecond],
DATENAME (NANOSECOND, GETDATE()) AS [NanoSecond],
DATENAME (ISO_WEEK, GETDATE()) AS [ISO Week]

عملکرد () SQL Server GETDATE و موارد استفاده از این تابعهمچنین می‌توانیم از مخفف آن برای دریافت خروجی آن استفاده کنیم، مثلاً می‌توانیم از mm یا m برای MONTHS، dd یا d برای DAY و … استفاده کنیم.

اکنون کوئری فوق را با تابع DATEPART اجرا می‌کنیم و تفاوت خروجی آنها را می‌بینیم.

SELECT DATEPART (YEAR, GETDATE()) AS [Year],
DATEPART (QUARTER, GETDATE()) AS [Quarter],
DATEPART (MONTH, GETDATE()) AS [Month],
DATEPART (DayOfYear, GETDATE()) AS [DayOfYear],
DATEPART (DAY, GETDATE()) AS [Day],
DATEPART (WEEK, GETDATE()) AS [Week],
DATEPART (WEEKDAY, GETDATE()) AS [Weekday],
DATEPART (HOUR, GETDATE()) AS [Hour],
DATEPART (MINUTE, GETDATE()) AS [Minute],
DATEPART (SECOND, GETDATE()) AS [Second],
DATEPART (MILLISECOND, GETDATE()) AS [Millisecond],
DATEPART (MICROSECOND, GETDATE()) AS [Microsecond],
DATEPART (NANOSECOND, GETDATE()) AS [NanoSecond],
DATEPART (ISO_WEEK, GETDATE()) AS [ISO Week]

در زیر خروجی کوئری بالاآمده است که در آن می‌توانیم ببینیم همه مجموعه‌ها نتایج مقدارشان را به‌صورت عدد صحیح برگرداندند، درحالی‌که نتایج بازگشتی با استفاده از تابع DATENAME به‌صورت رشته‌های کاراکتری بودند.عملکرد () SQL Server GETDATE و موارد استفاده از این تابعاستفاده از تابع DATEADD کاملاً متفاوت است. این تابع به ما کمک می‌کند تا تاریخ‌های گذشته یا آینده را بر اساس عبارت عددی ارسال شده با مقدار مشخص به دست بیاوریم همچنین می‌توانیم بخش‌هایی از تاریخ و زمان را همان‌طور که در کوئری زیر ارائه شده است، به دست آوریم.

SELECT GETDATE() AS [Today]
GO
SELECT DATEADD (QUARTER, 2, GETDATE()) AS [Quarter],
DATEADD (MONTH, 2, GETDATE()) AS [Month],
DATEADD (DAY, 2, GETDATE()) AS [Day],
DATEADD (WEEK, 2, GETDATE()) AS [Week],
DATEADD (WEEKDAY, 2, GETDATE()) AS [Weekday]

من از شماره ۲ برای هر بخش از عبارات تاریخ و زمان استفاده کرده‌ام:

  • سه‌ماهه دوم از امروز
  • ۲ ماه از امروز
  • دومین روز از امروز
  • هفته دوم از امروز
  • دومین روز هفته از امروز

توجه داشته باشید، من خروجی تاریخ و زمان فعلی را با استفاده از تابع SQL Server GETDATE برای یادداشت تاریخ و ساعت امروز واکشی کرده‌ام. تمام محاسبات از این مقدار انجام می‌شود. شما می‌توانید هر عددی را به این پرس‌وجو ارسال کنید و خروجی n امین مقدار آن بخش از تاریخ و زمان را برمی‌گرداند. اگر می‌خواهید خروجی مشابهی از گذشته دریافت کنید، باید این عدد را با علائم منفی مانند ۲-،۵- و غیره قرار دهید.

مقادیر را مقایسه کنید تا خروجی را بهتر درک کنید.عملکرد () SQL Server GETDATE و موارد استفاده از این تابع

استفاده از تابع SQL Server GETDATE با توابع DAY، MONTH، EOMONTH و YEAR

با استفاده از توابع بالا نیز می‌توانیم چنین جزئیاتی در مورد DAY، MONTH و YEAR دریافت کنیم، اما راه دیگری برای دریافت خروجی مشابه مانند بخشی از روز، ماه و سال وجود دارد.

SELECT YEAR(GETDATE()) AS [Year],
MONTH(GETDATE()) AS [Month],
DAY(GETDATE()) AS [Day],
EOMONTH(GETDATE()) AS [MonthEnd Date]

پرس‌وجوی بالا سال، ماه، روز و آخرین تاریخ ماه جاری را نمایش می‌دهد.

از این توابع استفاده می‌کنیم:

  • تابع YEAR برای نمایش سال جاری از تابع SQL Server GETDATE
  • تابع MONTH برای نمایش شماره ماه جاری از تابع SQL Server GETDATE
  • تابع DAY برای نمایش تاریخ از تابع SQL Server GETDATE
  • تابع EOMONTH برای نمایش آخرین روز ماه جاری با کمک تابع SQL Server GETDATE

استفاده از تابع SQL Server GETDATE با توابع DAY، MONTH، EOMONTH و YEARهمچنین می‌توانیم از تابع EOMONTH برای نمایش آخرین تاریخ فعلی، گذشته، آینده یا هر ماه مشخصی استفاده کنیم. در این تابع باید عددی را ارسال کنیم. این عدد تعیین کننده ماه نهم خواهد بود.

SELECT EOMONTH(GETDATE()) AS [Last Date of Current Month],
EOMONTH(GETDATE(), -1) AS [Last Date of Previous Month],
EOMONTH(GETDATE(), 1) AS [Last Date of Next Month]

می‌توانید مثال زیر را تحلیل کنید که در آن:

  • من هیچ شماره‌ای را برای دریافت آخرین تاریخ ماه جاری ارسال نکرده‌ام
  • من از عدد -۱ برای دریافت آخرین تاریخ ماه قبل استفاده کرده‌ام
  • من از عدد ۱ برای دریافت آخرین تاریخ ماه آینده استفاده کرده‌ام

شما می‌توانید بر اساس نیاز خود شماره را ارسال کنید. اگر می‌خواهید آخرین تاریخ ششم ماه را از امروز دریافت کنید، باید عدد ۶ را ارسال کنید تا جزئیات آن را دریافت کنید.

به خروجی زیر نگاه کنید و تجزیه‌وتحلیل کنید که این تابع چگونه نتیجه آخرین تاریخ هر ماه را نمایش می‌دهد.استفاده از تابع SQL Server GETDATE با توابع DAY، MONTH، EOMONTH و YEAR

فرمت زمان تاریخ را با استفاده از CAST و CONVERT تبدیل کنید

این بخش نحوه دریافت تاریخ فعلی را در قالب‌های مختلف توضیح می‌دهد. هر منطقه در این جهان از فرمت‌های مختلفی برای تاریخ و زمان استفاده می‌کند. قالب‌های خاص تاریخ و زمان بسته به موقعیت‌های جغرافیایی متمایز محبوب هستند. ما باید یک قالب تاریخ و زمان مناسب برای کاربران محلی را در توسعه خود در نظر بگیریم و از آن استفاده کنیم.

SQL Server دو تابع CAST و CONVERT را برای رسیدگی به مسائل مربوط به فرمت تاریخ و زمان ارائه کرده است. می‌توانید تاریخ جاری را مطابق با استانداردهای محلی خود با استفاده از تابع CONVERT تبدیل کنید. در اینجا به شما نشان خواهم داد که چگونه با استفاده از توابع CAST و CONVERT فرمت‌های تاریخ و زمان فعلی را تبدیل کنید.

کوئری زیر خروجی زیر را نمایش می‌دهد:

  • تابع SQL Server GETDATE
  • خط بعدی کد از تابع CAST برای تبدیل قالب فعلی تاریخ و زمان موجود که در ستون اول نشان‌داده‌شده است به فرمت MMM DD YYY HH:MM استفاده کرده است.
  • تابع CONVERT نیز همان خروجی تابع CAST را برمی‌گرداند
SELECT GETDATE() AS [Getdate],
CAST(GETDATE() AS NVARCHAR) AS [Getdate using CAST],
CONVERT(NVARCHAR , GETDATE()) AS [Getdate using CONVERT]

استفاده از تابع SQL Server GETDATE با توابع DAY، MONTH، EOMONTH و YEAR

من به شما توصیه می‌کنم برای دریافت تمام فرمت‌های تاریخ و زمان قابل‌اجرا از پیوند MSDN ضمیمه بازدید کنید که در آنها می‌توانیم تاریخ و زمان فعلی را با استفاده از تابع ()SQL Server GETDATE و با کمک تابع CONVERT دریافت کنیم.

من نمونه‌هایی از قالب‌های مختلف تاریخ و زمان را با استفاده از این توابع به شما نشان داده‌ام. اگر مطابق نیاز شما مناسب هستند، می‌توانید از آن‌ها استفاده کنید. مثال زیر را برای نمایش زمان تاریخ فعلی در قالب‌های مختلف از فرمت شماره ۰ تا فرمت شماره ۷ نشان داده‌ام.

کوئری زیر را اجرا کنید:

SELECT CONVERT(NVARCHAR , GETDATE(), 0) AS [MMM DD YYYY HH:MM],
CONVERT(NVARCHAR , GETDATE(), 1) AS [MMM/DD/YY],
CONVERT(NVARCHAR , GETDATE(), 2) AS [YY.MM.DD],
CONVERT(NVARCHAR , GETDATE(), 3) AS [DD/MM/YY],
CONVERT(NVARCHAR , GETDATE(), 4) AS [DD.MM.YY],
CONVERT(NVARCHAR , GETDATE(), 5) AS [DD-MM-YY],
CONVERT(NVARCHAR , GETDATE(), 6) AS [DD MM YY],
CONVERT(NVARCHAR , GETDATE(), 7) AS [MMM DD YY]

خروجی پرس‌وجو فوق در تصویر زیر نشان‌داده‌شده است که در آن می‌توانید تمام فرمت‌های تاریخ و زمان فعلی را مشاهده کنید.


استفاده از تابع SQL Server GETDATE با توابع DAY، MONTH، EOMONTH و YEAR

ده‌ها فرمت در پیوند MSDN به همراه شماره قالب تعریف‌شده آن موجود است که در جست‌وجوی بالا ارسال می‌کنیم تا تاریخ فعلی را مطابق با فرمت موردنظر خود دریافت کنیم.

نتیجه

من یک نمای کلی و موارد استفاده مختلف از عملکرد SQL Server GETDATE را توضیح داده‌ام. این تابع برای بازگرداندن مهر زمانی فعلی در قالب‌های مختلف بسته به نیاز ما بسیار مفید است. با نگاه‌کردن به چندین مثال ارائه شده در این مقاله می‌توانید آن را بیشتر درک کنید. اگر عملکرد SQL Server GETDATE برای نیاز شما مناسب نیست، می‌توانید سایر توابع تاریخ و زمان SQL Server را نیز امتحان کنید. درباره این توابع نیز در بخش‌های بالا که آنها را با تابع GETDATE مقایسه کرده‌ام، بیشتر جستجو کنید.

 

چه رتبه ای می‌دهید؟

میانگین ۳.۷ / ۵. از مجموع ۳

اولین نفر باش

title sign
دانلود مقاله
عملکرد () SQL Server GETDATE و موارد استفاده از این تابع
فرمت PDF
10 صفحه
حجم 1 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
402 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
title sign
دیدگاه کاربران

    • واقعا عالی و کامل
      تمام حالات یک تاریخ رو گفتین
      حوصله نداشتم ولی حیفم اومد نظر ندم
      آدم دیگه لازم نیست تو همه سایت ها بچرخه ، این قدر که کامله
      ان شاالله موفق بشین

      خیلی ممنون از شما

      ۱