امروز جمعه 02 آذر 1403 http://learn.cloob24.com
0
مشکل ترین قسمت کار با تاریخ زمان تطبیق دادن تاریخ زمان ی است که می خواهیم در فیلد بنوسیم با فرمت تعریف شده برای ان فیلد است
توابع تاریخ زمان در mysql
now() تاریخ و زمان فعلی سیستم را بر می گرداند
CURDATE() تاریخ فعلی سیستم را بر می گرداند
CURTIME() زمان فعلی سیستم را بر می گرداند
DATE()قسمت تاریخ یک تاریخ یا تاریخ زمان را بر می گرداند
EXTRACT() جزئی از تاریخ زمان را بر می گرداند
DATE_ADD() زمانی را به تاریخ اضافه می کند
DATE_SUB() زمانی را از تاریخ کم می کند
DATEDIFF() تعداد روزهای بین دو تاریخ را بر می گرداند
DATE_FORMAT() تاریخ و زمان را در قالب های مختلف بر می گرداند
تابع now

این تابع برابر تاریخ و زمان سیستم کامپیوتر ما می باشد

مثال:

SELECT NOW(),CURDATE(),CURTIME()

مقدار سه تابع بالا را نمایش می دهد

همچنین می توانید فیلدی در جدول بسازید که مقدار ان زمان تاریخ فعلی کامپیوتر باشد

مثال

CREATE TABLE Orders
(
OrderId int NOT NULL,
ProductName varchar(50)NOT NULL,
OrderDate datetime NOT NULL DEFAULT NOW(),
PRIMARY KEY (OrderId)
)

در جدول مثال بالا، فیلد OrderDate از نوع datetime تعریف شده که نباید مقدار ان خالی بماند و به طور پیش فرض مقدار تاریخ زمان فعلی کامپیوتر با تابع now برای هر رکورد جدید در ان قرار خواهد گرفت

حال ما می خواهیم رکورد جدید به جدول Orders اضافه نمائیم:

INSERT INTO Orders (ProductName)VALUES ('Jarlsberg Cheese')

جدول به صورت زیر خواهد شد:

OrderIdProductNameOrderDate
1Jarlsberg Cheese2008-11-11 13:23:44.657
تابع CURDATE

تاریخ فعلی سیستم کامپیوترمان را بر می گرداند

مثال

SELECT NOW(),CURDATE(),CURTIME()

مقدار هر سه تابع را نمایش می دهد

خروجی این دستور بصورت زیر خواهد شد:

NOW()CURDATE()CURTIME()
2008-11-11 12:45:342008-11-1112:45:34

مثال

در جدول Orders فیلدی به نام OrderDate را از نوع datetime تعریف کرده و می خواهیم بصورت پیش فرض مقدار تاریخ سیستم در ان برای هر رکورد جدید قرار گیرد

CREATE TABLE Orders
(
OrderId int NOT NULL,
ProductName varchar(50)NOT NULL,
OrderDate datetime NOT NULL DEFAULT CURDATE(),
PRIMARY KEY (OrderId)
)

حال می خواهیم رکورد جدید به این جدول اضافه نمائیم

INSERT INTO Orders (ProductName)VALUES ('Jarlsberg Cheese')

جدول بصورت زیر خواهد شد:

OrderIdProductNameOrderDate
1Jarlsberg Cheese2008-11-11
تابع DATE(date)
تابع date پارامتری از نوع تاریخ زمان می گیرد و فقط قسمت تاریخ انرا برمی گرداند

مثال

جدول orders بصورت زیر وجود دارد

OrderIdProductNameOrderDate
1Jarlsberg Cheese2008-11-11 13:23:44.657

دستور زیر را داریم:

SELECT ProductName, DATE(OrderDate) AS OrderDate
FROM Orders
WHERE OrderId=1

نتیجه بصورت زیر خواهد بود

ProductNameOrderDate
Jarlsberg Cheese2008-11-11
تابع EXTRACT
از این تابع برای بدست اوردن جزئی از تاریخ زمان مثل سال یا ماه یا روز یا ساعت یا دقیقه یا ثانیه استفاده می شود

روش استفاده:

این تابع پارامتری از نوع تاریخ زمان می گیرد

EXTRACT(unit FROM date)

مقادیر مختلفی که می توان به جای unit گذاشت بصورت زیر است:
Unit Value
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
مثال

جدول زیر را داریم:

OrderIdProductNameOrderDate
1Jarlsberg Cheese2008-11-11 13:23:44.657

حال دستورات زیر را داریم:

SELECT EXTRACT(YEAR FROM OrderDate) AS OrderYear,
EXTRACT(MONTH FROM OrderDate) AS OrderMonth,
EXTRACT(DAY FROM OrderDate) AS OrderDay,
FROM Orders
WHERE OrderId=1

نتیجه اجرای دستورات بالا بصورت زیر است

OrderYearOrderMonthOrderDay
20081111
تابع DATE_ADD
زمان خاصی را به تاریخ می افزاید

روش استفاده:

DATE_ADD(date,INTERVAL expr type)

date یک تاریخ است و expr زمانی است که باید به تاریخ افزوده شود و type می تواند یکی از مقادیر زیر باشد
Type Value
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH

مثال

جدول orders را بصورت زیر داریم:

OrderIdProductNameOrderDate
1Jarlsberg Cheese2008-11-11 13:23:44.657
حالا می خواهیم 45 روز به تاریخ موجود در فیلد orderdate بیافزائیم
SELECT OrderId,DATE_ADD(OrderDate,INTERVAL 45 DAY) AS OrderPayDate
FROM Orders
نتیجه ای که مشاهده خواهیم کرد بصورت زیر است:
OrderIdOrderPayDate
12008-12-26 13:23:44.657
تابع DATE_SUB
زمان مشخصی را از تاریخ زمان کم می کند

روش استفاده از این تابع:

DATE_SUB(date,INTERVAL expr type)

date یک تاریخ است و expr زمانی است که باید از تاریخ کم شود و type می تواند یکی از مقادیر زیر باشد
Type Value
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH

مثال

جدول orders بصورت زیر موجود است

OrderIdProductNameOrderDate
1Jarlsberg Cheese2008-11-11 13:23:44.657
حال می خواهیم 5 روز از تاریخ موجود در فیلد orderdate کم کرده نتجه را نمایش دهیم
SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 5 DAY) AS SubtractDate
FROM Orders

نتیجه جدولی بصورت زیر می باشد:

OrderIdSubtractDate
12008-11-06 13:23:44.657
تابع DATEDIFF
زمان موجود در بین دو تاریخ را بر می گرداند

روش استفاده:

DATEDIFF(date1,date2)

در این دستور فقط تاریخ مورد محاسبه قرار می گیرد

مثال

SELECT DATEDIFF('2008-11-30','2008-11-29')AS DiffDate

نتیجه بصورت زیر مشاهده خواهد شد:

DiffDate
1


مثال

SELECT DATEDIFF('2008-11-29','2008-11-30')AS DiffDate

نتیجه بصورت زیر مشاهده خواهد شد:

DiffDate
-1
تابع DATE_FORMAT
از این تابع برای نمایش تاریخ زمان در قالب های مختلف بکار می رود

روش استفاده:

DATE_FORMAT(date,format)

مقدارهای مختلف برای format بصورت زیر است:
FormatDescription
%aAbbreviated weekday name
%bAbbreviated month name
%cMonth, numeric
%DDay of month with English suffix
%dDay of month, numeric (00-31)
%eDay of month, numeric (0-31)
%fMicroseconds
%HHour (00-23)
%hHour (01-12)
%IHour (01-12)
%iMinutes, numeric (00-59)
%jDay of year (001-366)
%kHour (0-23)
%lHour (1-12)
%MMonth name
%mMonth, numeric (00-12)
%pAM or PM
%rTime, 12-hour (hh:mm:ss AM or PM)
%SSeconds (00-59)
%sSeconds (00-59)
%TTime, 24-hour (hh:mm:ss)
%UWeek (00-53)where Sunday is the first day of week
%uWeek (00-53)where Monday is the first day of week
%VWeek (01-53)where Sunday is the first day of week, used with %X
%vWeek (01-53)where Monday is the first day of week, used with %x
%WWeekday name
%wDay of the week (0=Sunday, 6=Saturday)
%XYear of the week where Sunday is the first day of week, four digits, used with %V
%xYear of the week where Monday is the first day of week, four digits, used with %v
%YYear, four digits
%yYear, two digits

مثال

به چند روش می خواهیم تاریخ زمان فعلی سیستم را مشاهده نمائیم

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بصورت زیر است
تابعتوضیحات
GETDATE()زمان تاریخ فعلی سیستم را بر می گرداند
DATEPART()جزئی از تاریخ زمان را بر می گرداند
DATEADD()زمان مشخصی را به تاریخ افزوده یا کم می کند
DATEDIFF()اختلاف دو تاریخ را بر می گرداند
CONVERT()تاریخ و زمان را در قالب های مختلف نمایش می دهد
انواع نوع داده تاریخ / زمان در MYSQL , SQL SERVER

با انواع مختلف نوع داده تاریخ / زمان می توان قالب بندی مختلفی در ذخیره تاریخ و زمان در فیلدها تعریف کرد

در زیر، نوع داده و قالب بندی هریک را مشاهده می کنید

  • 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
می توان به راحتی برای انتخاب فیلد از نوع تاریخ شرط گذاشت به شرط اینکه هیچ جزء زمانی شامل ساعت دقیقه و ثانیه در ان نباشد

مثال

جدول ORDERS بصورت زیر است

OrderIdProductNameOrderDate
1Geitost2008-11-11
2Camembert Pierrot2008-11-09
3Mozzarella di Giovanni2008-11-11
4Mascarpone Fabioli2008-10-29

دستور زیر را داریم:

SELECT * FROM Orders WHERE OrderDate='2008-11-11'

رکوردهایی را می خواهیم که ORDERDATE انها برابر 2008-11-11 باشد

OrderIdProductNameOrderDate
1Geitost2008-11-11
3Mozzarella di Giovanni2008-11-11

حال فرض کنید جدول ORDERS بصورت زیر است:

OrderIdProductNameOrderDate
1Geitost2008-11-11 13:23:44
2Camembert Pierrot2008-11-09 15:45:21
3Mozzarella di Giovanni2008-11-11 11:12:01
4Mascarpone Fabioli2008-10-29 14:56:59

حال دستور زیر را داریم:

SELECT * FROM Orders WHERE OrderDate='2008-11-11'
این دستور نتیجه ای نخواهد داشت زیرا در ستون ORDERDATE در جدول مقدار زمانی هم داریم
نکته: اگر می خواهید کوئری های راحت و اسان بنویسید در فیلد تاریخ / زمان خود جزء زمان را وارد نکنید
تبلیغات متنی
فروشگاه ساز رایگان فایل - سیستم همکاری در فروش فایل
بدون هیچ گونه سرمایه ای از اینترنت کسب درآمد کنید.
بهترین فرصت برای مدیران وبلاگ و وب سایتها برای کسب درآمد از اینترنت
WwW.PnuBlog.Com
ارسال دیدگاه