整理SqlServer2008的时间函数如下:
1.获取系统时间
select getdate(); --2012-05-06 22:26:49.950
select current_timestamp; --2012-05-06 22:26:49.950
select getutcdate(); --2012-05-06 14:26:49.950 UTC时间
--更精确的系统时间
select SYSDATETIME(); --2012-05-06 22:26:49.9531250
select SYSUTCDATETIME(); --2012-05-06 14:26:49.9531250 UTC时间
select SYSDATETIMEOFFSET(); --2012-05-06 22:26:49.9531250 +08:00
2.获取时间部分值例子
select convert(date,getdate()); --2012-05-06
select convert(time,getdate()); --22:31:10.4200000
select datepart(yyyy,getdate()); --2012
select datepart(month,gatedate()); --5
select datepart(day,getdate()); --6
select datepart(week,getdate()); --19
select datename(yyyy,getdate()); --2012
select datename(month,gatedate()); --05
select datename(day,getdate()); --6
select datename(week,getdate()); --19
--datepart返回值是整型(int)
--datename返回值是字符串型(nvarhar)
3.时间计算
--加3天,+3,减3天,-3即可
select getdate()+3; --2012-05-09 22:31:50.345
select dateadd(day,-3,'2012-05-03'); --2012-05-03 00:00:00.000
--dateadd返回的是date参数对应的类型
4.时间差值计算
select DATEDIFF(DAY,'2012-05-03',GETDATE()) --3,表示相隔3天
select DATEDIFF(month,'2012-03-03',GETDATE()) --2,表示相隔2月
--datediff返回的是int值
Fun1: DATEADD (datepart,number,date)
datepart选项值如下:
depart 缩写
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw, w
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns
Func2:DATEDIFF(datepart,startdate,enddate)
datepart 缩写
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns
Func3:DATEPART(datepart,date)
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
ISO_WEEK isowk, isoww
Func4:DATENAME(datepart,date)
datename中datepart值基本等同于datepart函数,只是返回值是nvarchar类型--参考Microsoft Document Explore of Transact-SQL