SQL Working With Dates

در SQL تاریخ‌ها و زمان‌ها بخش مهمی از داده‌ها هستند و با استفاده از توابع و فرمت‌های مخصوص می‌تونیم اون‌ها رو مدیریت کنیم.
موضوع Working with Dates شامل درج، نمایش، محاسبه و فیلتر کردن تاریخ‌هاست.

🔹 انواع داده تاریخ و زمان

نوع دادهتوضیح
DATEفقط تاریخ (YYYY-MM-DD)
TIMEفقط زمان (HH:MM:SS)
DATETIMEتاریخ و زمان با هم
TIMESTAMPتاریخ و زمان با دقت بیشتر و معمولاً برای ثبت تغییرات

🔹 درج داده تاریخ

CREATE TABLE Orders ( OrderID INT PRIMARY KEY, OrderDate DATE ); INSERT INTO Orders (OrderID, OrderDate) VALUES (1, '2025-10-07');

📌 در این مثال، تاریخ به‌صورت YYYY-MM-DD وارد شده است.

🔹 دریافت تاریخ فعلی

پایگاه دادهدستور
SQL ServerSELECT GETDATE();
MySQLSELECT NOW();
PostgreSQLSELECT CURRENT_TIMESTAMP;

📌 این دستور تاریخ و زمان فعلی سیستم را برمی‌گردونه.

🔹 استخراج بخش خاصی از تاریخ

تابعمثالتوضیح
YEAR()SELECT YEAR(OrderDate) FROM Orders;سال را نمایش می‌دهد
MONTH()SELECT MONTH(OrderDate) FROM Orders;ماه را نمایش می‌دهد
DAY()SELECT DAY(OrderDate) FROM Orders;روز ماه را نمایش می‌دهد
DATEPART() (SQL Server)SELECT DATEPART(weekday, OrderDate) FROM Orders;شماره روز هفته را نمایش می‌دهد

🔹 عملیات روی تاریخ‌ها

عملیاتمثالتوضیح
جمع روزDATEADD(day, 7, '2025-10-07') (SQL Server)۷ روز به تاریخ اضافه می‌کنه
تفریق تاریخDATEDIFF(day, '2025-10-01', '2025-10-07') (SQL Server)تعداد روزهای بین دو تاریخ
افزودن ماهDATEADD(month, 2, '2025-10-07')۲ ماه به تاریخ اضافه می‌کنه

🔹 فیلتر کردن با تاریخ

SELECT * FROM Orders WHERE OrderDate BETWEEN '2025-10-01' AND '2025-10-07';

📌 همه سفارش‌هایی که بین دو تاریخ مشخص هستند انتخاب می‌شوند.

🔹 قالب‌بندی تاریخ

  • SQL Server:

    SELECT FORMAT(OrderDate, 'yyyy-MM-dd') FROM Orders;
  • MySQL:

    SELECT DATE_FORMAT(OrderDate, '%d-%m-%Y') FROM Orders;
  • PostgreSQL:

    SELECT TO_CHAR(OrderDate, 'DD-MM-YYYY') FROM Orders;

🔹 نکات مهم

  • همیشه فرمت تاریخ پایگاه داده را رعایت کن (YYYY-MM-DD در اکثر DBMSها).

  • برای محاسبه سن، مدت زمان یا فیلتر کردن بازه‌ها، از توابع تاریخ و زمان استفاده کن.

  • برخی DBMSها تفاوت جزئی در نام توابع و پارامترها دارن، پس مستندات مخصوص هر DBMS را بررسی کن.