در SQL، توابع تاریخ و زمان برای انجام عملیات مختلف بر روی دادههای تاریخی (تاریخ و زمان) استفاده میشوند. این توابع میتوانند برای دریافت تاریخ و زمان جاری، استخراج بخشهای خاصی از تاریخ، محاسبه تفاوت میان تاریخها و دیگر عملیات مرتبط با تاریخ و زمان به کار روند. در اینجا به بررسی سه تابع پرکاربرد تاریخ و زمان در SQL یعنی NOW، DATE و DATEDIFF پرداختهایم.
1. تابع NOW:
تابع NOW برای دریافت تاریخ و زمان جاری در پایگاه داده استفاده میشود. این تابع معمولاً برای ذخیره یا نمایش زمان و تاریخ فعلی در هنگام اجرای کوئریها استفاده میشود.
ساختار:
مثال:
اگر بخواهید تاریخ و زمان فعلی را از پایگاه داده دریافت کنید، از NOW به این شکل استفاده میکنید:
در اینجا:
- نتیجه تاریخ و زمان جاری سیستم پایگاه داده را برمیگرداند.
2. تابع DATE:
تابع DATE برای استخراج تنها بخش تاریخ (بدون زمان) از یک مقدار تاریخ و زمان یا یک ستون استفاده میشود. این تابع میتواند از یک تاریخ و زمان کامل استفاده کند و تنها بخش تاریخ آن (یعنی سال، ماه و روز) را برگرداند.
ساختار:
مثال:
اگر یک ستون تاریخ_و_زمان در جدول فاکتورها وجود داشته باشد و بخواهید تنها تاریخ بدون زمان را از آن استخراج کنید، میتوانید از DATE به این شکل استفاده کنید:
FROM فاکتورها;
در اینجا:
- تابع DATE تنها بخش تاریخ (سال، ماه و روز) از ستون تاریخ_و_زمان را استخراج میکند و زمان را نادیده میگیرد.
- نتیجه، تنها تاریخ هر فاکتور (بدون زمان) خواهد بود.
3. تابع DATEDIFF:
تابع DATEDIFF برای محاسبه تفاوت بین دو تاریخ استفاده میشود. این تابع معمولاً برای محاسبه تعداد روزها بین دو تاریخ به کار میرود.
ساختار:
- تاریخ1: تاریخ اول
- تاریخ2: تاریخ دوم
این تابع تعداد روزهای بین تاریخ1 و تاریخ2 را برمیگرداند. توجه کنید که اگر تاریخ1 قبل از تاریخ2 باشد، نتیجه مثبت خواهد بود و اگر تاریخها معکوس باشند (یعنی تاریخ1 بعد از تاریخ2 باشد)، نتیجه منفی خواهد بود.
مثال:
اگر بخواهید تعداد روزهای بین تاریخ امروز و تاریخ ثبت فاکتور در جدول فاکتورها را محاسبه کنید، از DATEDIFF به شکل زیر استفاده میکنید:
FROM فاکتورها;
در اینجا:
- NOW() تاریخ و زمان جاری است.
- تاریخ_ثبت تاریخ ثبت فاکتور است.
- DATEDIFF تفاوت تعداد روزها بین تاریخ جاری و تاریخ ثبت فاکتور را محاسبه میکند.
- نتیجه، تعداد روزهایی که از ثبت هر فاکتور گذشته است خواهد بود.
4. ترکیب توابع تاریخ و زمان:
شما میتوانید این توابع را با هم ترکیب کنید تا عملیات پیچیدهتری را انجام دهید. به عنوان مثال، اگر بخواهید تاریخ و زمان جاری را به صورت کامل نمایش دهید، به همراه تفاوت روزها بین دو تاریخ:
مثال:
DATE(تاریخ_ثبت) AS تاریخ_ثبت,
DATEDIFF(NOW(), تاریخ_ثبت) AS تعداد_روز_از_ثبت_فاکتور
FROM فاکتورها;
در اینجا:
- تاریخ و زمان فعلی به وسیله NOW() نمایش داده میشود.
- تنها تاریخ (بدون زمان) از تاریخ_ثبت استخراج میشود.
- تعداد روزهای بین تاریخ ثبت فاکتور و تاریخ و زمان فعلی محاسبه میشود.
5. نکات مهم در استفاده از توابع تاریخ و زمان:
- تفاوت تاریخها: تابع DATEDIFF معمولاً تنها تفاوت روزها را محاسبه میکند. اگر نیاز به محاسبه تفاوت در واحدهای دیگر مانند ماه یا سال دارید، ممکن است نیاز به استفاده از توابع مختلف یا انجام محاسبات اضافی باشد.
- فرمت تاریخها: بسته به پایگاه داده شما، ممکن است فرمت تاریخها و زمانها کمی متفاوت باشد. برای مثال، در MySQL فرمت تاریخ به صورت YYYY-MM-DD است.
- تاریخ و زمان در مناطق مختلف: در صورتی که از تاریخ و زمان در مناطق زمانی مختلف استفاده میکنید، ممکن است نیاز به توجه به تنظیمات منطقه زمانی (timezone) در پایگاه داده داشته باشید.
نتیجهگیری:
توابع تاریخ و زمان در SQL ابزارهای مفیدی برای انجام عملیات مختلف بر روی دادههای تاریخ و زمان هستند. این توابع به شما این امکان را میدهند که تاریخ و زمان جاری را دریافت کنید، تنها بخش تاریخ را استخراج کنید، تفاوت بین تاریخها را محاسبه کنید و بسیاری از عملیات دیگر را انجام دهید. استفاده مؤثر از این توابع میتواند در تجزیه و تحلیل دادههای تاریخی و زمانبندی فرآیندها در پایگاههای داده بسیار مفید باشد.
