عملکرد تابع ()GETDATE در SQL Server و موارد استفاده از آن
عملکرد تابع ()GETDATE در SQL Server تاریخ و زمان فعلی سرور را برمیگرداند و در ثبت و مدیریت دادههای زمانی کاربرد دارد.
عملکرد تابع ()GETDATE در SQL Server و موارد استفاده از آن
در بسیاری از برنامههای کاربردی و پایگاههای داده، ثبت و مدیریت تاریخ و زمان نقش بسیار مهمی دارد.
اطلاعاتی مانند زمان ثبت سفارش، تاریخ ورود کاربران، زمان ایجاد رکوردها، ثبت لاگهای سیستم، زمان آخرین ویرایش اطلاعات و بسیاری موارد دیگر به تاریخ و زمان وابسته هستند.
SQL Server برای کار با تاریخ و زمان مجموعهای از توابع کاربردی را در اختیار توسعهدهندگان قرار میدهد که یکی از پرکاربردترین آنها تابع ()GETDATE است.
تابع ()GETDATE یکی از توابع داخلی SQL Server محسوب میشود که تاریخ و زمان فعلی سرور را برمیگرداند.
این تابع به دلیل سادگی و کاربرد گسترده، در بسیاری از پروژههای نرمافزاری، گزارشگیریها، فرآیندهای خودکار و عملیات مربوط به مدیریت دادهها مورد استفاده قرار میگیرد.
تابع GETDATE چیست؟
تابع ()GETDATE تاریخ و زمان جاری سیستم عامل سروری که SQL Server روی آن نصب شده است را برمیگرداند.
ساختار استفاده از این تابع بسیار ساده است:
SELECT GETDATE();
خروجی نمونه:
2026-07-05 14:30:45.123
در این خروجی:
-
تاریخ جاری نمایش داده میشود.
-
ساعت جاری نمایش داده میشود.
-
دقیقه و ثانیه نیز نمایش داده میشوند.
-
بخش میلیثانیه نیز وجود دارد.
نوع داده خروجی GETDATE در SQL Server
خروجی تابع ()GETDATE از نوع داده DATETIME است.
بنابراین میتوان آن را در متغیرها، ستونهای جدول و سایر توابع مرتبط با تاریخ و زمان استفاده کرد.
مثال:
DECLARE @CurrentDate DATETIME;
SET @CurrentDate = GETDATE();
SELECT @CurrentDate;
مشاهده تاریخ و زمان فعلی در SQL Server
سادهترین کاربرد GETDATE نمایش تاریخ و زمان فعلی سیستم است.
SELECT GETDATE() AS CurrentDateTime;
خروجی:
CurrentDateTime
2026-07-05 14:30:45.123
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!
این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.
با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.
پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
درج تاریخ فعلی هنگام ثبت رکورد
یکی از رایجترین کاربردهای GETDATE ثبت زمان ایجاد رکوردها است.
فرض کنید جدول کاربران داریم:
CREATE TABLE Users
(
UserId INT,
FullName NVARCHAR(100),
RegisterDate DATETIME
);
در هنگام درج اطلاعات:
INSERT INTO Users
(
UserId,
FullName,
RegisterDate
)
VALUES
(
1,
'Ali Ahmadi',
GETDATE()
);
در این حالت زمان ثبت کاربر به صورت خودکار ذخیره میشود.
استفاده از GETDATE به عنوان مقدار پیشفرض
میتوان زمان فعلی را به عنوان مقدار پیشفرض یک ستون تعیین کرد.
CREATE TABLE Orders
(
OrderId INT IDENTITY,
OrderDate DATETIME
DEFAULT GETDATE()
);
اکنون هنگام درج رکورد:
INSERT INTO Orders DEFAULT VALUES;
تاریخ و زمان فعلی به صورت خودکار ذخیره خواهد شد.
استفاده از GETDATE در گزارشگیری
در بسیاری از گزارشها نیاز داریم تاریخ فعلی را نمایش دهیم.
SELECT
OrderId,
GETDATE() AS ReportDate
FROM Orders;
این کار باعث میشود زمان تولید گزارش مشخص باشد.
محاسبه اختلاف تاریخ با GETDATE
تابع GETDATE معمولاً همراه تابع DATEDIFF استفاده میشود.
مثال:
SELECT
DATEDIFF(
DAY,
'2026-01-01',
GETDATE()
) AS DaysPassed;
این دستور تعداد روزهای سپری شده از ابتدای سال را محاسبه میکند.
محاسبه سن کاربران
فرض کنید تاریخ تولد در جدول ذخیره شده است.
SELECT
FullName,
DATEDIFF(
YEAR,
BirthDate,
GETDATE()
) AS Age
FROM Users;
این Query سن تقریبی کاربران را محاسبه میکند.
نمایش رکوردهای امروز
برای نمایش اطلاعات ثبت شده در روز جاری:
SELECT *
FROM Orders
WHERE CAST(OrderDate AS DATE)
=
CAST(GETDATE() AS DATE);
فقط سفارشات امروز نمایش داده میشوند.
نمایش رکوردهای هفته جاری
SELECT *
FROM Orders
WHERE OrderDate >=
DATEADD(
DAY,
-7,
GETDATE()
);
سفارشات هفت روز اخیر نمایش داده خواهند شد.
نمایش رکوردهای ماه جاری
SELECT *
FROM Orders
WHERE MONTH(OrderDate)
=
MONTH(GETDATE())
AND
YEAR(OrderDate)
=
YEAR(GETDATE());
استفاده از GETDATE همراه DATEADD
تابع DATEADD برای اضافه یا کم کردن زمان استفاده میشود.
-
اضافه کردن یک روز
SELECT DATEADD(
DAY,
1,
GETDATE()
);
-
اضافه کردن یک ماه
SELECT DATEADD(
MONTH,
1,
GETDATE()
);
-
اضافه کردن یک سال
SELECT DATEADD(
YEAR,
1,
GETDATE()
);
کم کردن زمان با GETDATE در SQL Server
-
یک روز قبل
SELECT DATEADD(
DAY,
-1,
GETDATE()
);
-
یک ماه قبل
SELECT DATEADD(
MONTH,
-1,
GETDATE()
);
-
یک سال قبل
SELECT DATEADD(
YEAR,
-1,
GETDATE()
);
یافتن کاربران غیرفعال
فرض کنید آخرین ورود کاربران ذخیره شده است.
SELECT *
FROM Users
WHERE LastLogin <
DATEADD(
MONTH,
-6,
GETDATE()
);
کاربرانی که بیش از شش ماه وارد سیستم نشدهاند نمایش داده میشوند.
استفاده در ثبت لاگ
یکی از مهمترین کاربردهای GETDATE ثبت لاگ سیستم است.
INSERT INTO SystemLogs
(
LogMessage,
LogDate
)
VALUES
(
'User Login',
GETDATE()
);
استفاده در Triggerها
در تریگرها نیز از GETDATE زیاد استفاده میشود.
مثال:
CREATE TRIGGER trg_UpdateDate
ON Products
AFTER UPDATE
AS
BEGIN
UPDATE Products
SET LastUpdate =
GETDATE()
END
استفاده در Stored Procedure
CREATE PROCEDURE SaveLog
AS
BEGIN
INSERT INTO Logs
(
LogDate
)
VALUES
(
GETDATE()
);
END
استخراج بخشهای مختلف تاریخ
سال جاری
SELECT YEAR(GETDATE());
ماه جاری
SELECT MONTH(GETDATE());
روز جاری
SELECT DAY(GETDATE());
ساعت جاری
SELECT DATEPART(
HOUR,
GETDATE()
);
دقیقه جاری
SELECT DATEPART(
MINUTE,
GETDATE()
);
تبدیل GETDATE به فرمتهای مختلف
فقط تاریخ
SELECT
CAST(
GETDATE()
AS DATE
);
نتیجه:
2026-07-05
فقط زمان
SELECT
CAST(
GETDATE()
AS TIME
);
نتیجه:
14:30:45
تفاوت GETDATE و CURRENT_TIMESTAMP
در SQL Server این دو تقریباً عملکرد یکسانی دارند.
SELECT GETDATE();
SELECT CURRENT_TIMESTAMP;
هر دو تاریخ و زمان فعلی را برمیگردانند.
تفاوت GETDATE و SYSDATETIME
تابع ()SYSDATETIME دقت بیشتری دارد.
SELECT SYSDATETIME();
نمونه خروجی:
2026-07-05 14:30:45.1234567
در حالی که GETDATE دقت کمتری دارد:
2026-07-05 14:30:45.123
مزایای استفاده از GETDATE در SQL Server
-
سادگی
استفاده از آن بسیار آسان است. -
سرعت
نیاز به محاسبات پیچیده ندارد. -
کاربرد گسترده
تقریباً در تمامی پروژههای SQL استفاده میشود. -
مناسب برای ثبت زمان
در ثبت سفارشات، لاگها و فعالیت کاربران بسیار کاربردی است.
کاربردهای واقعی GETDATE در SQL Server
برخی از کاربردهای مهم این تابع عبارتاند از:
-
ثبت زمان ایجاد رکورد
-
ثبت زمان ویرایش اطلاعات
-
ثبت لاگهای سیستم
-
مدیریت سفارشات
-
گزارشگیری روزانه
-
محاسبه سن کاربران
-
بررسی کاربران غیرفعال
-
مدیریت اعتبار اشتراکها
-
محاسبه زمان باقیمانده
-
تحلیل رفتار کاربران

نکات مهم عملکرد تابع ()GETDATE در SQL Server
-
زمان بر اساس سرور است
GETDATE زمان سیستم عامل سرور SQL را برمیگرداند نه زمان کامپیوتر کاربر. -
دقت محدود
اگر به دقت بسیار بالا نیاز دارید بهتر است از SYSDATETIME استفاده کنید. -
استفاده در WHERE
در جداول بزرگ بهتر است از ایندکسهای مناسب استفاده شود تا عملکرد Query کاهش پیدا نکند.
جمعبندی
تابع ()GETDATE یکی از پرکاربردترین توابع تاریخ و زمان در SQL Server است که تاریخ و ساعت فعلی سرور را برمیگرداند.
این تابع در ثبت رکوردها، مدیریت سفارشات، گزارشگیری، ثبت لاگ، محاسبه بازههای زمانی و بسیاری از عملیات روزمره پایگاه داده کاربرد دارد.
استفاده از GETDATE در کنار توابعی مانند DATEADD، DATEDIFF، YEAR، MONTH و DAY امکانات قدرتمندی برای کار با تاریخ و زمان فراهم میکند.
آشنایی کامل با این تابع برای هر توسعهدهنده SQL Server ضروری است، زیرا در اغلب پروژههای واقعی به شکل گسترده مورد استفاده قرار میگیرد.



کاربران ما
شما هم نظرتون با ما دریاره “عملکرد تابع ()GETDATE در SQL Server و موارد استفاده از آن” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید