SQL SERVER中系統函數是非常有用的對象,可以協助我們實現許多演算法功能.以下是總結的關於系統時間方面的內建函數:
1
.DATEADD:
用法:DATEADD(timeinterval,number,date) 在date的基礎上加上number*timeinterval時間差
timeinterval-間隔時間單位,如day或DD(日),MM(月),hh(小時),ww(周),yy(年),s(秒)
number-----間隔的次數(可正可負.即可取將來時間亦可取過去時間)
date--------基準時間
eg:dateadd(hh,10,getdate()) 取系統時間之後10小時的時間
dateadd (day,-3,getdate())取系統時間之前3天的時間
2.DATEDIFF:
用法:DATEDIFF(timeinterval,date1,date2) 計算從date1到date2的時間差,傳回值以timeinterval為單位,date1在date2之後,返回負值
eg:DATEDIFF(DAY,'2009-9-1',GETDATE()) 返回2009-9-1到系統時間的天數(day)
datediff(hh,getdate(),'2009-9-1') 返回系統時間到2009-9-1之間的小時數(hh)
3.DATENAME:返回時間日期文字中部分資訊(如年份,月份,)
用法:datename(datepart,date)
datepart :是返回的
date 的一部分。下表列出了所有有效
datepart 參數。使用者定義的變數等效項是無效的。
datepart |
縮寫 |
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 |
date;可以使運算式,列運算式、使用者定義的變數或字串文字。(MSDN原話)
以下執行個體:返回當前系統時間中年,月,日,dayofyear,星期等資訊
SELECT DATENAME(year, getdate())
,DATENAME(month, getdate())
,DATENAME(day, getdate())
,DATENAME(dayofyear, getdate())
,DATENAME(weekday, getdate());
result為:2009 09 2 245 星期三
4.DATEPART
用法:datepart(datepart,date)作用同datename類似
從下例中可看出兩者差別: datename返回的是字串類型,datepart返回的是int類型
SELECT datepart(year, getdate())
,datepart(month, getdate())
,datepart(day, getdate())
,datepart(dayofyear, getdate())
,datepart(weekday, getdate());
result:2009 9 2 245 4