是規(guī)定應(yīng)向日期的哪一部分返回新值的參數(shù)。下表列出了 Microsoft® SQL Server™ 識(shí)別的日期部分和縮寫。
number
是用來(lái)增加datepart的值,如果指定的不是一個(gè)整數(shù),則將舍棄此值的小數(shù)部分。
例如,如果為datepart指定day,為number指定1.75,則day將增加1。
date
是返回DateTime類型或SmallDateTime值或日期格式字符串的表達(dá)式。
返回值類型:
返回DateTime,如果date參數(shù)是SmallDateTime,返回SmallDateTime。
示例:
此示例打印出當(dāng)前時(shí)間加上21天,
DateAdd(day, 21, GetDate())
number傳負(fù)數(shù),大于本月剩余天數(shù)的值都是可以的,函數(shù)會(huì)自己演算。
[2] DateDiff()
作用:
返回跨兩個(gè)指定日期的日期和時(shí)間邊界數(shù)。
語(yǔ)法:
DateDiff(datepart, startDate, endDate)
參數(shù):
datepart
DateAdd()中以對(duì)此參數(shù)進(jìn)行了介紹,這里不再贅述,后面的datepart參數(shù)也同。
startDate
是計(jì)算的開始日期,startDate是返回DateTime或SmallDateTime值或日期格式字符串的表達(dá)式。
因?yàn)镾mallDateTime只精確到分鐘,所以當(dāng)用SmallDateTime時(shí),秒和毫秒總是0。
endDate
是計(jì)算的總是日期。endDate是返回DateTime或SmallDateTime值或日期格式字符串的表達(dá)式。
返回值類型:
int
解釋:
startDate是從endDate減去。如果startDate比endDate玩,返回負(fù)值。
當(dāng)超出整數(shù)值范圍,DateDiff產(chǎn)生錯(cuò)誤。
對(duì)于毫秒,最大數(shù)是24天20小時(shí)31分鐘零23.647秒。
對(duì)于秒,最大數(shù)是68年。
計(jì)算跨分鐘、秒和毫秒這些邊界的方法,使得DateDiff給出的結(jié)果在全部數(shù)據(jù)類型中是一致的。
結(jié)果是帶正負(fù)號(hào)的整數(shù)值,其等于跨第一個(gè)和第二個(gè)日期間的datepart邊界值。
例如,在1月4日(星期日)和1月11日(星期日)之間的星期數(shù)是1。
示例:
select DateDiff(day, '2009-10-24', GetDate())
[3] Day()
作用:
返回代表指定日期的天的日期部分整數(shù)。
語(yǔ)法:
Day(date)
參數(shù):
date
類型為DateTime或SmallDateTime的表達(dá)式。
返回值類型:
int
解釋:
此函數(shù)等價(jià)于DatePart(dd, date)
示例:
下面的示例從2009-10-4中返回day部分
select Day('2009-10-4')
會(huì)得到4,即日期部分
[4] Month()
作用:
返回代表指定日期月份的整數(shù)。
語(yǔ)法:
Month(date)
參數(shù):
date
返回DateTime或SmallDateTime值或日期格式字符串的表達(dá)式。
返回值類型:
int
解釋:
此函數(shù)等價(jià)于等價(jià)于DatePart(mm, date)
示例:
下面的示例從2009-10-4中返回month部分
select Month('2009-10-4')
會(huì)獲得10,即月份部分
[5] Year()
作用:
返回表示指定日期中的年份的整數(shù)。
語(yǔ)法:
Year(date)
參數(shù):
date
DateTime或SmallDateTime類型的表達(dá)式。
返回值類型:
int
解釋:
此函數(shù)等價(jià)于DatePart(yy, date)
示例:
下例從日期2009-10-4中返回年分?jǐn)?shù)
select Year('2009-10-4')
獲得2009,即年份部分
2. 非確定性函數(shù):
[1] DateName()
作用:
返回代表指定日期的制定日期部分的字符串。
語(yǔ)法:
DateName(datepart, date)
參數(shù):
datepart
同DateAdd()
返回值類型:
nvarchar
解釋:
SQL Server自動(dòng)在字符和DateTime值間按需求進(jìn)行交換,例如,當(dāng)字符與DateTime值進(jìn)行比較時(shí)。
示例:
此示例從GetDate返回的日期中提取月份名,
select DateName(month, GetDate())
獲得October
[2] GetDate()
作用:
按DateTime值的 Microsoft® SQL Server™ 標(biāo)準(zhǔn)內(nèi)部格式返回當(dāng)前系統(tǒng)日期和時(shí)間。
語(yǔ)法:
GetDate()
返回值類型:
DateTime
解釋:
日期函數(shù)可以用在select語(yǔ)句的選擇列表或用在查詢的where子句中,
在設(shè)計(jì)報(bào)表時(shí),GetDate函數(shù)可用于在每次生成報(bào)表時(shí)打印當(dāng)前日期和時(shí)間。
GetDate對(duì)于跟蹤活動(dòng)也很有用,諸如在記錄事務(wù)在某一賬戶上發(fā)生的時(shí)間。
示例:
A. 用GetDate返回當(dāng)前日期和日期和時(shí)間
下面的示例得出當(dāng)前系統(tǒng)日期和時(shí)間:
select GetDate()
B. 在create table語(yǔ)句中使用GetDate
下面的示例創(chuàng)建Employees表并用GetDate給出員工雇傭時(shí)間的默認(rèn)值。
use Test
go
create table Employees (
id int identity(1, 1),
empName varchar(40) not null,
createDtm DateTime default GetDate()
)
go
[3] GetUtcDate()
作用:
返回表示當(dāng)前UTC時(shí)間(世界時(shí)間坐標(biāo)或稱格林威治標(biāo)準(zhǔn)時(shí)間)的DateTime值。
當(dāng)前的UTC時(shí)間得自當(dāng)前的本地時(shí)間和運(yùn)行SQL Server的計(jì)算機(jī)操作系統(tǒng)中的設(shè)置。
語(yǔ)法:
GetUtcDate()
返回值類型:
DateTime
解釋:
GetUtcDate是非確定性函數(shù)。引用該列的視圖和表達(dá)式無(wú)法進(jìn)行索引。
GetUtcDate無(wú)法在用戶定義的函數(shù)內(nèi)使用。
最后的這個(gè)比較特別,它是DatePart()
除了用作DatePart(dw, date)外都具有確定性。
dw是工作日的日期部分。
作用:
返回代表指定日期的指定日期部分的函數(shù)。
語(yǔ)法:
DatePart(datepart, date)
參數(shù):
datepart
這里多了個(gè)weekday(dw),返回對(duì)應(yīng)于星期中某天的數(shù),
例如,Sunday = 1,Saturday = 7。
weekday日期部分產(chǎn)生的數(shù)取決于set datefirst設(shè)定的值,此命令設(shè)定星期中的第一天。
date
是返回DateTime或SmallDateTime值或日期格式字符串的表達(dá)式。
返回值類型:
int
解釋:
Day、Month和Year函數(shù)分別等價(jià)于DatePart(dd, date)、DatePart(mm, date)和DatePart(yy, date)
示例:
GetDate函數(shù)返回當(dāng)前日期,然而,比較時(shí)并不總是需要完整的日期信息,通常只是對(duì)日期的一部分進(jìn)行比較。
select DatePart(mm, GetDate()) as 'Month Num'
go
獲得10