گروه مقاله : SQL Server
تاريخ انتشار : 1394/02/06 - 15:40
كد :264

توابع تاریخ در SQL

سخت ترین قسمت کار با Date این است که مطمئن شویم فرمت تاریخی که شما سعی می کنید وارد کنید با فرمت ستون تاریخ در پایگاه داده هم خوانی داشته باشد.
تا زمانی که داده فقط شامل تاریخ باشد، Query شما همان طور که انتظار دارید کار خواهد کرد. اما اگر با بخش زمان درگیر شوید، کار کمی پیچیده خواهد شد .
قبل از صحبت درباره پیچیدگی های کار با تاریخ، توابع مهم آن را با هم مرور می کنیم:
توابع تاریخ در MySQL :
جدول زیر، لیستی از مهم ترین توابع تاریخ در MySQL است:
 
تابع توضیحات
NOW()
تاریخ و زمان جاری را برمی گرداند
CURDATE() تاریخ جاری را برمی گرداند
CURTIME() زمان جاری را برمی گرداند
DATE() بیرون می کشد date/time بخش تاریخ را از یک عبارت
EXTRACT() مانند سال، ماه، روز، ساعت و ... را برمی گرداند date/timeیکی از بخش های عبارت 
DATE_ADD() یک فاصله زمانی مشخص را به تاریخ  اضافه می کند
DATE_SUB() یک فاصله زمانی مشخص را از تاریخ کم می کند
DATEDIFF() تعداد روز بین دو تاریخ را برمی گرداند
DATE_FORMAT() نمایش تاریخ و زمان در فرمت های مختلف

 

توابع تاریخ در SQL Server :
جدول زیر، لیستی از مهم ترین توابع تاریخ در SQL Server است:
 
تابع توضیحات
GETDATE() تاریخ و زمان جاری را برمی گرداند
DATEPART()  مانند سال،ماه،روز،ساعت را برمی گرداندdate/timeیکی از بخش های عبارت 
DATEADD() یک فاصله زمانی مشخص را به تاریخ اضافه یا کم می کند
DATEDIFF() زمان بین دو تاریخ را برمی گرداند
CONVERT() نمایش تاریخ و زمان در فرمت های مختلف
 
انواع داده های تاریخ در SQL :
 
MySQL:
 
  • DATE - format YYYY-MM-DD
  • DATETIME - format: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - format: YYYY-MM-DD HH:MM:SS
  • YEAR - format YYYY or YY
 
SQL Server :
 
  • DATE - format YYYY-MM-DD
  • DATETIME - format: YYYY-MM-DD HH:MM:SS
  • SMALLDATETIME - format: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - format: a unique number
 
توجه : زمانی که یک جدول جدید تعریف می کنید باید برای هر ستون Data Type آن را مشخص کنید.
 
کار با تاریخ در SQL :
 
توجه : اگر خودتان را با بخش زمان درگیر نکنید ،به راحتی می توانید دو تاریخ مختلف را با هم بررسی کنید!
فرض کنید جدول "Orders" را داریم:
 
OrderId ProductName OrderDate
1 Geitost 2008-11-11
2 Camembert Pierrot 2008-11-09
3 Mozzarella di Giovanni 2008-11-11
4 Mascarpone Fabioli 2008-10-29
 
حالا می خواهیم رکوردهایی با تاریخ "2008-11-11" را انتخاب کنیم.
از Query زیر استفاده می کنیم :
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
 
نتیجه به شکل زیر خواهد بود:
 
OrderId ProductName OrderDate
1 Geitost 2008-11-11
3 Mozzarella di Giovanni 2008-11-11
 
حالا، فرض کنید که جدول "Orders" شبیه زیر باشد. (بخش زمان به فیلد OrderDate اضافه شده است)
 
OrderId ProductName OrderDate
1 Geitost 2008-11-11 13:23:44
2 Camembert Pierrot 2008-11-09 15:45:21
3 Mozzarella di Giovanni 2008-11-11 11:12:01
4 Mascarpone Fabioli 2008-10-29 14:56:59
 
اگر از Query بالا استفاده کنیم نتیجه ای نخواهیم داشت، بنابراین اگر می خواهید Queryی ساده ای داشته باشید، اجازه ندهید بخش زمان در تاریخ وارد شود.
 
توجه: در SQL Server با استفاده از تابع ()substring می توان قسمت تاریخ را بیرون کشید و سپس مقایسه کرد.
SELECT * FROM Orders WHERE substring(OrderDate,1,10)='2008-11-11'
نظرات كاربران :