Code *********在Sql Server中时间是精确到3毫秒***************** --------------第一天--------------------------------------- SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) select DATEDIFF(mm,0,getdate()) SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0) --------------当天半夜-------------------------------------------- SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0) --------------最后一天-------------------------------------------- SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)) SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0)) select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())),0) ----------去掉时分秒---------------------------- declare @a datetime set @a = getdate() SELECT @a,DATEADD(day,DATEDIFF(day,0,@a),0) ----------显示星期几---------------------------- select datename(weekday,getdate()) ----------如何取得某个月天数------------------- declare @m int set @m=3 --月份 select datediff(day,'2006-'+cast(@m as varchar)+'-15' ,'2006-'+cast(@m+1 as varchar)+'-15') ----------或者使用计算本月的最后一天的脚本,然后用DAY函数区最后一天 SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))) ----------判断是否闰年:------------------------ SELECT case day(dateadd(mm, 2, dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)))) when 28 then '平年' else '闰年' end select case datediff(day,datename(year,getdate())+'-02-01',dateadd(mm,1,datename(year,getdate())+'-02-01')) when 28 then '平年' else '闰年' end ----------一个季度多少天------------------------ declare @m tinyint,@time smalldatetime select @m=month(getdate()) select @m=case when @m between 1 and 3 then 1 when @m between 4 and 6 then 4 when @m between 7 and 9 then 7 else 10 end select @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01' select datediff(day,@time,dateadd(mm,3,@time))