توابع Date 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'

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

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