توابع Date SQL
- صفحه قبلی View در SQL
- صفحه بعدی Nulls در SQL
تاریخ SQL
یکی از دشوارترین وظایف هنگام کار با تاریخ، اطمینان از تطابق فرمت تاریخ ورودی با فرمت ستون تاریخ در پایگاه داده است.
اگر داده شامل فقط بخش تاریخ باشد، اجرای جستجو مشکلی ایجاد نمیکند. اما اگر زمان نیز درگیر باشد، وضعیت کمی پیچیدهتر میشود.
قبل از بحث در مورد پیچیدگیهای جستجوهای تاریخ، بیایید به مهمترین توابع داخلی پردازش تاریخ نگاهی بیندازیم.
توابع تاریخ MySQL
جدول زیر فهرستی از مهمترین توابع داخلی تاریخ در MySQL را نشان میدهد:
وظیفه | توضیحات |
---|---|
NOW() | تاریخ و زمان فعلی را بازمیگرداند |
CURDATE() | تاریخ فعلی را بازمیگرداند |
CURTIME() | زمان فعلی را بازمیگرداند |
DATE() | قسمت تاریخ یک عبارت تاریخ/زمان را استخراج میکند |
EXTRACT() | قسمتهای جداگانه تاریخ/زمان را بازمیگرداند |
DATE_ADD() | به تاریخ یک بازه زمانی مشخص را اضافه میکند |
DATE_SUB() | از تاریخ یک بازه زمانی مشخص را کم میکند |
DATEDIFF() | تعداد روزهای بین دو تاریخ را بازمیگرداند |
DATE_FORMAT() | نمایش تاریخ/زمان به فرمتهای مختلف |
توابع تاریخ SQL Server
جدول زیر فهرستی از مهمترین توابع داخلی تاریخ در SQL Server را نشان میدهد:
وظیفه | توضیحات |
---|---|
GETDATE() | تاریخ و زمان فعلی را بازمیگرداند |
DATEPART() | قسمتهای جداگانه تاریخ/زمان را بازمیگرداند |
DATEADD() | افزودن یا کم کردن یک بازه زمانی مشخص به تاریخ |
DATEDIFF() | زمان بین دو تاریخ بازمیگرداند |
CONVERT() | نمایش تاریخ/زمان به فرمتهای مختلف |
نوع داده SQL Date
MySQL در پایگاه داده از نوع دادههای زیر برای ذخیره تاریخ یا تاریخ/زمان استفاده میکند:
- DATE - فرمت YYYY-MM-DD
- DATETIME - فرمت: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - فرمت: YYYY-MM-DD HH:MM:SS
- YEAR - فرمت YYYY یا YY
SQL Server از نوع دادههای زیر برای ذخیره تاریخ یا تاریخ/زمان در پایگاه داده استفاده میکند:
- DATE - فرمت YYYY-MM-DD
- DATETIME - فرمت: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - فرمت: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - فرمت: عدد منحصر به فرد
مدیریت تاریخ در SQL
اگر بخش زمانی را در نظر نگرفته باشیم، میتوانیم به راحتی دو تاریخ را مقایسه کنیم!
فرض کنید ما جدول "Orders" زیر را داریم:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
2 | printer | 2008-12-26 |
3 | electrograph | 2008-11-12 |
4 | telephone | 2008-10-19 |
حالا، ما میخواهیم رکوردهایی که تاریخ OrderDate آنها "2008-12-26" است را از جدول بالا انتخاب کنیم.
ما از جمله SELECT زیر استفاده میکنیم:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
مجموعه نتایج:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
3 | electrograph | 2008-12-26 |
حالا فرض کنید "Orders" مانند زیر است (لطفاً به بخش زمانی ستون "OrderDate" توجه کنید):
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 16:23:55 |
2 | printer | 2008-12-26 10:45:26 |
3 | electrograph | 2008-11-12 14:12:08 |
4 | telephone | 2008-10-19 12:56:10 |
اگر از جمله SELECT بالا استفاده کنیم:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
بنابراین نمیتوانیم نتیجهای دریافت کنیم. این به دلیل اینکه تاریخ بدون بخش زمانی در این جستجو وجود ندارد.
توجه:اگر میخواهید جستجو سادهتر و قابل نگهداریتر باشد، بخش زمانی را در تاریخ استفاده نکنید!
- صفحه قبلی View در SQL
- صفحه بعدی Nulls در SQL