توابع تاریخ و زمان date در پایگاه داده sql
مشکل ترین قسمت کار با تاریخ زمان تطبیق دادن تاریخ زمان ی است که می خواهیم در فیلد بنوسیم با فرمت تعریف شده برای ان فیلد است | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
این تابع برابر تاریخ و زمان سیستم کامپیوتر ما می باشد | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مثال: SELECT NOW(),CURDATE(),CURTIME() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مقدار سه تابع بالا را نمایش می دهد | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
همچنین می توانید فیلدی در جدول بسازید که مقدار ان زمان تاریخ فعلی کامپیوتر باشد | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مثال CREATE TABLE Orders | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
در جدول مثال بالا، فیلد OrderDate از نوع datetime تعریف شده که نباید مقدار ان خالی بماند و به طور پیش فرض مقدار تاریخ زمان فعلی کامپیوتر با تابع now برای هر رکورد جدید در ان قرار خواهد گرفت | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
حال ما می خواهیم رکورد جدید به جدول Orders اضافه نمائیم: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
INSERT INTO Orders (ProductName)VALUES ('Jarlsberg Cheese') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
جدول به صورت زیر خواهد شد: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
تاریخ فعلی سیستم کامپیوترمان را بر می گرداند | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مثال SELECT NOW(),CURDATE(),CURTIME() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مقدار هر سه تابع را نمایش می دهد | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
خروجی این دستور بصورت زیر خواهد شد: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مثال در جدول Orders فیلدی به نام OrderDate را از نوع datetime تعریف کرده و می خواهیم بصورت پیش فرض مقدار تاریخ سیستم در ان برای هر رکورد جدید قرار گیرد | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CREATE TABLE Orders | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
حال می خواهیم رکورد جدید به این جدول اضافه نمائیم INSERT INTO Orders (ProductName)VALUES ('Jarlsberg Cheese') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
جدول بصورت زیر خواهد شد: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
تابع date پارامتری از نوع تاریخ زمان می گیرد و فقط قسمت تاریخ انرا برمی گرداند | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مثال جدول orders بصورت زیر وجود دارد | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
دستور زیر را داریم: SELECT ProductName, DATE(OrderDate) AS OrderDate | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
نتیجه بصورت زیر خواهد بود | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
از این تابع برای بدست اوردن جزئی از تاریخ زمان مثل سال یا ماه یا روز یا ساعت یا دقیقه یا ثانیه استفاده می شود | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
روش استفاده: این تابع پارامتری از نوع تاریخ زمان می گیرد EXTRACT(unit FROM date) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مقادیر مختلفی که می توان به جای unit گذاشت بصورت زیر است: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مثال | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
جدول زیر را داریم:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
حال دستورات زیر را داریم: SELECT EXTRACT(YEAR FROM OrderDate) AS OrderYear, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
نتیجه اجرای دستورات بالا بصورت زیر است | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
زمان خاصی را به تاریخ می افزاید | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
روش استفاده: DATE_ADD(date,INTERVAL expr type) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
date یک تاریخ است و expr زمانی است که باید به تاریخ افزوده شود و type می تواند یکی از مقادیر زیر باشد | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مثال جدول orders را بصورت زیر داریم:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
حالا می خواهیم 45 روز به تاریخ موجود در فیلد orderdate بیافزائیم | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SELECT OrderId,DATE_ADD(OrderDate,INTERVAL 45 DAY) AS OrderPayDate FROM Orders | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
نتیجه ای که مشاهده خواهیم کرد بصورت زیر است: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
زمان مشخصی را از تاریخ زمان کم می کند | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
روش استفاده از این تابع: DATE_SUB(date,INTERVAL expr type) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
date یک تاریخ است و expr زمانی است که باید از تاریخ کم شود و type می تواند یکی از مقادیر زیر باشد | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مثال جدول orders بصورت زیر موجود است
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
حال می خواهیم 5 روز از تاریخ موجود در فیلد orderdate کم کرده نتجه را نمایش دهیم | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 5 DAY) AS SubtractDate FROM Orders | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
نتیجه جدولی بصورت زیر می باشد:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
زمان موجود در بین دو تاریخ را بر می گرداند | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
روش استفاده: DATEDIFF(date1,date2) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
در این دستور فقط تاریخ مورد محاسبه قرار می گیرد | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مثال SELECT DATEDIFF('2008-11-30','2008-11-29')AS DiffDate | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
نتیجه بصورت زیر مشاهده خواهد شد:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مثال SELECT DATEDIFF('2008-11-29','2008-11-30')AS DiffDate | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
نتیجه بصورت زیر مشاهده خواهد شد:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
از این تابع برای نمایش تاریخ زمان در قالب های مختلف بکار می رود | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
روش استفاده: DATE_FORMAT(date,format) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مقدارهای مختلف برای format بصورت زیر است: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مثال به چند روش می خواهیم تاریخ زمان فعلی سیستم را مشاهده نمائیم | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p') DATE_FORMAT(NOW(),'%m-%d-%Y') DATE_FORMAT(NOW(),'%d %b %y') DATE_FORMAT(NOW(),'%d %b %Y %T:%f') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
نتیجه بصورت زیر است | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Nov 04 2008 11:45 PM 11-04-2008 04 Nov 08 04 Nov 2008 11:45:34:243 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
توابع مهم در SQL SERVERبصورت زیر است | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
با انواع مختلف نوع داده تاریخ / زمان می توان قالب بندی مختلفی در ذخیره تاریخ و زمان در فیلدها تعریف کرد در زیر، نوع داده و قالب بندی هریک را مشاهده می کنید | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
انواع نوع داده تاریخ /زمان و قالب بندی هریک در ذخیره تاریخ و زمان در فیلد مربوطه در SQL SERVER را خواهید دید: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
می توان به راحتی برای انتخاب فیلد از نوع تاریخ شرط گذاشت به شرط اینکه هیچ جزء زمانی شامل ساعت دقیقه و ثانیه در ان نباشد | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
مثال جدول ORDERS بصورت زیر است
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
دستور زیر را داریم: SELECT * FROM Orders WHERE OrderDate='2008-11-11' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
رکوردهایی را می خواهیم که ORDERDATE انها برابر 2008-11-11 باشد | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
حال فرض کنید جدول ORDERS بصورت زیر است:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
حال دستور زیر را داریم: SELECT * FROM Orders WHERE OrderDate='2008-11-11' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
این دستور نتیجه ای نخواهد داشت زیرا در ستون ORDERDATE در جدول مقدار زمانی هم داریم | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
نکته: اگر می خواهید کوئری های راحت و اسان بنویسید در فیلد تاریخ / زمان خود جزء زمان را وارد نکنید |
- لینک منبع
تاریخ: پنجشنبه , 09 آذر 1396 (10:29)
- گزارش تخلف مطلب