ably ably برای هدایت شدن به سایت جدید اینجا کلیک کنید

آموزش برنامه نویسی

آموزش برنامه نویسی وب، اندروید، ویندوز , اسکیوال و...
Tell: 0912 097 5516
| Email: Hello@EduOnline.ir

تاریخ در SQL

بسم الله الرحمن الرحیم

همانطور که می دانید ما در SQL Server نوع داده ای با نام DateTime داریم. این نوع داده ای برای ذخیره اطلاعات تاریخ و ساعت در SQL Server استفاده می شود. در اینجا قصد داریم برخی از توابع مفید برای کار بر روی DateTime را بررسی کنیم.

بدست آوردن تاریخ جاری در SQL Server

برای بدست آوردن تاریخ و ساعت جاری سیستم می توانید از تابع زیر استفاده کنید

select  getdate()

DATEPART

بدست آوردن بخشی از یک تاریخ در SQL Server

اگر بخواهید بخشی از یک تاریخ و زمان را انتخاب کنید، (مثلا فقط روز یا فقط ساعت و....) می بایست از تابع DATEPART استفاده کنید این تابع دو پارامتر دریافت می کند.
پارامتر اول مشخص کننده بخشی از تاریخ و زمان که می بایست انتخاب شود و پارامتر دوم تاریخی است که شما می خواهید بر روی آن کار کنید.

DATEPART ( datepartEnum , yourDate )


به جای datepartEnum می توانید از مقادیر زیر استفاده کنید

datepart

Abbreviations

year

yy , yyyy

quarter

qq , q

month

mm , m

dayofyear

dy , y

day

dd , d

week

wk , ww

weekday

dw

hour

hh

minute

mi, n

second

ss , s

millisecond

ms

microsecond

mcs

nanosecond

ns

TZoffset

tz

ISO_WEEK

isowk , isoww




مثال

SELECT DATEPART(year, '12:10:30.123')
    ,DATEPART(month, '12:10:30.123')
    ,DATEPART(day, '12:10:30.123')
    ,DATEPART(dayofyear, '12:10:30.123')
    ,DATEPART(weekday, '12:10:30.123');


مثال

DECLARE @t time = '12:10:30.123'; 
SELECT DATEPART(year, @t);


مثال

SELECT DATEPART(millisecond, '00:00:01.1234567'); -- Returns 123
SELECT DATEPART(microsecond, '00:00:01.1234567'); -- Returns 123456
SELECT DATEPART(nanosecond,  '00:00:01.1234567'); -- Returns 123456700


برای تغییر فرمت نمایش تاریخ ها می توانید به صورت زیر عمل کنید

select convert(varchar,dateadd(day,-1,getdate()),103) --21/09/2011
select convert(varchar,dateadd(day,-1,getdate()),103) --09/21/2011
select convert(varchar,dateadd(day,-1,getdate()),111) --2011/09/2011

بدست آوردن تاریخ های خاص در SQL Server

اگر بخواهید تاریخ اولین روز هفته میلادی، اولین روز ماه میلادی، تاریخ روز گذشته و.. را بدست آورید می توانید از مثال های زیر کمک بگیرید

----Today
SELECT GETDATE() 'Today'
----Yesterday
SELECT DATEADD(d,-1,GETDATE()) 'Yesterday'
----First Day of Current Week
SELECT DATEADD(wk,DATEDIFF(wk,0,GETDATE()),0) 'First Day of Current Week'
----Last Day of Current Week
SELECT DATEADD(wk,DATEDIFF(wk,0,GETDATE()),6) 'Last Day of Current Week'
----First Day of Last Week
SELECT DATEADD(wk,DATEDIFF(wk,7,GETDATE()),0) 'First Day of Last Week'
----Last Day of Last Week
SELECT DATEADD(wk,DATEDIFF(wk,7,GETDATE()),6) 'Last Day of Last Week'
----First Day of Current Month
SELECT DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0) 'First Day of Current Month'
----Last Day of Current Month
SELECT DATEADD(ms,- 3,DATEADD(mm,0,DATEADD(mm,DATEDIFF(mm,0,GETDATE())+1,0))) 'Last Day of Current Month'
----First Day of Last Month
SELECT DATEADD(mm,-1,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)) 'First Day of Last Month'
----Last Day of Last Month
SELECT DATEADD(ms,-3,DATEADD(mm,0,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0))) 'Last Day of Last Month'
----First Day of Current Year
SELECT DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0) 'First Day of Current Year'
----Last Day of Current Year
SELECT DATEADD(ms,-3,DATEADD(yy,0,DATEADD(yy,DATEDIFF(yy,0,GETDATE())+1,0))) 'Last Day of Current Year'
----First Day of Last Year
SELECT DATEADD(yy,-1,DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0)) 'First Day of Last Year'
----Last Day of Last Year
SELECT DATEADD(ms,-3,DATEADD(yy,0,DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0))) 'Last Day of Last Year'

ResultSet:

Today
———————–
2008-08-29 21:54:58.967

Yesterday
———————–
2008-08-28 21:54:58.967

First Day of Current Week
————————-
2008-08-25 00:00:00.000

Last Day of Current Week
————————
2008-08-31 00:00:00.000

First Day of Last Week
———————–
2008-08-18 00:00:00.000

Last Day of Last Week
———————–
2008-08-24 00:00:00.000

First Day of Current Month
————————–
2008-08-01 00:00:00.000

Last Day of Current Month
————————-
2008-08-31 23:59:59.997

First Day of Last Month
———————–
2008-07-01 00:00:00.000

Last Day of Last Month
———————–
2008-07-31 23:59:59.997

First Day of Current Year
————————-
2008-01-01 00:00:00.000

Last Day of Current Year
————————
2008-12-31 23:59:59.997

First Day of Last Year
———————–
2007-01-01 00:00:00.000

Last Day of Last Year
———————–
2007-12-31 23:59:59.997

DATEDIFF

مقایسه دو تاریخ در SQL Server

در صورتی که بخواهید دو تاریخ را با یکدگیر مقایسه کنید می توانید از تابع DATEDIFF استفاده نمایید.

این تابع سه پارارمتر دارد:
پارمتر اول مشخص کننده واحدی (سال، ماه، روز، ساعت و...) است که شما می خواهید بر اساس آن مقایسه انجام شود و پارامتر دوم و سوم تاریخ شما برای مقایسه می باشد.
به جای پارامتر اول می توانید از مقادیر مشخص شده در جدول زیر استفاده کنید.

datepart

Abbreviations

year

yy , yyyy

quarter

qq , q

month

mm , m

dayofyear

dy , y

day

dd , d

week

wk , ww

weekday

dw

hour

hh

minute

mi, n

second

ss , s

millisecond

ms

microsecond

mcs

nanosecond

ns

TZoffset

tz

ISO_WEEK

isowk , isoww


مثال

SELECT DATEDIFF(year, '2012/04/28', '2014/04/28');
Result: 2

SELECT DATEDIFF(yyyy, '2012/04/28', '2014/04/28');
Result: 2

SELECT DATEDIFF(yy, '2012/04/28', '2014/04/28');
Result: 2

SELECT DATEDIFF(month, '2014/01/01', '2014/04/28');
Result: 3

SELECT DATEDIFF(day, '2014/01/01', '2014/04/28');
Result: 117

SELECT DATEDIFF(hour, '2014/04/28 08:00', '2014/04/28 10:45');
Result: 2

SELECT DATEDIFF(minute, '2014/04/28 08:00', '2014/04/28 10:45');
Result: 165

datepart

Abbreviations

year

yy , yyyy

quarter

qq , q

month

mm , m

dayofyear

dy , y

day

dd , d

week

wk , ww

weekday

dw

hour

hh

minute

mi, n

second

ss , s

millisecond

ms

microsecond

mcs

nanosecond

ns

TZoffset

tz

ISO_WEEK

isowk , isoww

نظرات (۰)

هيچ نظري هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی
up
ما را در گوگل محبوب کنید