日期函数
getdate()
得到当前时间,可以设置得到各种时间格式.
datepart(日期部分,日期)
取指定时间的某一个部分,年月天时分秒.
datediff(日期部分,日期1,日期2)
计算指定的日期1和日期2的时间差多少.
dateadd(日期部分,数值表达式,日期)
计算指定时间,再加上表达式指定的时间长度.

--取时间的某一个部分

select datepart(yy,getdate()) --year
 select datepart(mm,getdate()) --month
 select datepart(dd,getdate()) --day
 select datepart(hh,getdate()) --hour
 select datepart(mi,getdate()) --min
 select datepart(ss,getdate()) --sec



--取星期几




set datefirst 1
select datepart(weekday,getdate()) --weekday



--字符串时间




select getdate() -- '03/11/12'
select convert(char,getdate(),101) -- '09/27/2003'
select convert(char,getdate(),102) -- '2003.11.12'
select convert(char,getdate(),103) -- '27/09/2003'
select convert(char,getdate(),104) -- '27.09.2003'
select convert(char,getdate(),105) -- '27-09-2003'
select convert(char,getdate(),106) -- '27 Sep 2003'
select convert(char,getdate(),107) --'Sep 27, 2003'
select convert(char,getdate(),108) --'11:16:06'
select convert(char,getdate(),109) --'Sep 27 2003 11:16:28:746AM'
select convert(char,getdate(),110) --'09-27-2003'
select convert(char,getdate(),111) --'2003/09/27'
select convert(char,getdate(),112) --'20030927'
select rtrim(convert(char,getdate(),102))+' '+(convert(char,getdate(),108)) -- '2003.11.12 11:03:41'



--整数时间




select convert(int,convert(char(10),getdate(),112)) -- 20031112
select datepart(hh,getdate())*10000 + datepart(mi,getdate())*100 + datepart(ss,getdate()) -- 110646



--时间格式 "YYYY.MM.DD HH:MI:SS" 转换为 "YYYYMMDDHHMISS"


declare @a datetime,@tmp varchar(20),@tmp1 varchar(20)
 select @a=convert(datetime,'2004.08.03 12:12:12')
 select @tmp=convert(char(10),@a,112)
 select @tmp
 select @tmp1=convert(char(10),datepart(hh,@a)*10000 + datepart(mi,@a)*100 + datepart(ss,@a))
 select @tmp1
 select @tmp=@tmp+@tmp1
 select @tmp



===============

http://fengxingshenzhou.iteye.com/blog/698927

日期函数:
getdate() 得到当前时间,
datepart(日期部分,日期)
取指定时间的某一个部分,年月日时分秒 星期.

例 2010年6月25日 9:53:44  星期五

select datepart(yy,getdate()) --year 2010 
 select datepart(mm,getdate()) --month 6 
 select datepart(dd,getdate()) --day 25 
 select datepart(hh,getdate()) --hour 9 
 select datepart(mi,getdate()) --min 53 
 select datepart(ss,getdate()) --sec 44



--取星期几
//该计算出的结果要-1,因其计算出的星期天为一周的第1天,星期六自然就成为一周第7天

select datepart(weekday,getdate()) --weekday 5
----------------------------------------------------------------------


--字符串时间

select getdate() -- '03/11/12' 
 select convert(char,getdate(),101) -- '09/27/2003' 
 select convert(char,getdate(),102) -- '2003.11.12' 
 select convert(char,getdate(),103) -- '27/09/2003' 
 select convert(char,getdate(),104) -- '27.09.2003' 
 select convert(char,getdate(),105) -- '27-09-2003' 
 select convert(char,getdate(),106) -- '27 Sep 2003' 
 select convert(char,getdate(),107) --'Sep 27, 2003' 
 select convert(char,getdate(),108) --'11:16:06' 
 select convert(char,getdate(),109) --'Sep 27 2003 11:16:28:746AM' 
 select convert(char,getdate(),110) --'09-27-2003' 
 select convert(char,getdate(),111) --'2003/09/27' 
 select convert(char,getdate(),112) --'20030927' 
 // 日期与时间拼接 
 select rtrim(convert(char,getdate(),102))+' '+(convert(char,getdate(),108)) -- '2003.11.12 11:03:41' 

 --整数时间 

 select convert(int,convert(char(10),getdate(),112)) -- 20031112 日期 
 select datepart(hh,getdate())*10000 + datepart(mi,getdate())*100 + datepart(ss,getdate()) -- 110646  时间



-------------------------------------------------------------------


--当月最后一天

declare 
 @tmpstr varchar(10) 
 @mm int, 
 @premm int, 
 @curmmlastday varchar(10) 
 begin 
 select @mm=datepart(month,getdate())--当月 
 select @premm=datepart(month,dateadd(month,-1,getdate())) --上个月 
 if (@mm>=1 and @mm<=8) 
 select @tmpstr=convert(char(4),datepart(year,getdate()))+'.0'+convert(char(1),datepart(month,dateadd(month,1,getdate())))+'.'+'01' 
 else if (@mm>=9 and @mm<=11) 
 select @tmpstr=convert(char(4),datepart(year,getdate()))+'.'+convert(char(2),datepart(month,dateadd(month,1,getdate())))+'.'+'01' 
 else 
 select @tmpstr=convert(char(4),datepart(year,dateadd(year,1,getdate())))+'.0'+convert(char(1),datepart(month,dateadd(month,1,getdate())))+'.'+'01' 
 select @curmmlastday=convert(char(10),dateadd(day,-1,@tmpstr),102) --当月最后一天 
 end


上月第一天: 
 select dateadd(mm,-1,convert(char(8),(datepart(yy,getdate())*10000+datepart(mm,getdate())*100+01))) 
 上月最后一天: 
 select dateadd(dd,-1,convert(char(8),(datepart(yy,getdate())*10000+datepart(mm,getdate())*100+01))) 
 其实就是先取本月第一天,然后分别减一个月和一天就是上月第一天和最后一天 
 ------------------------------------------------------------- 

 datediff(日期部分,日期1,日期2) 
 计算指定的日期1和日期2的时间差多少. 

 例:select datediff(day,'2008-10-1','2008-10-31') --30 
 ------------------------------------------------------------- 
 dateadd(日期部分,数值表达式,日期) 
 计算指定时间,再加上表达式指定的时间长度 

 格式为:DateAdd(interval, number, date) 
 interval:间隔时间(如时、分、秒、天、周、月、季、年) 
 number:间隔数(正数为向后+N,负数为向前-N) 
 date:当前日期或指定日期 

 // 当前时间  2010年6月25日 9:53:44  星期五 
 select dateadd(year, 1, getdate()) --2011