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 |
以下实例:返回当前系统时间中年,月,日,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