·天新网首页·加入收藏·设为首页·网站导航
数码笔记本手机摄像机相机MP3MP4GPS
硬件台式机网络服务器主板CPU硬盘显卡
办公投影打印传真
家电电视影院空调
游戏网游单机动漫
汽车新车购车试驾
下载驱动源码
学院开发设计
考试公务员高考考研
业界互联网通信探索
【软考】SQL Server各种日期计算方法
http://www.21tx.com 2005年08月16日 CSDN xpilot

上一页 1 2

  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)

  在这个例子里,我使用了“本周的星期一”的脚本,并作了一点点修改。修改的部分是把原来脚本中“getdate()”部分替换成计算本月的第6天,在计算中用本月的第6天来替换当前日期使得计算可以获得这个月的第一个星期一。

  总结

  我希望这些例子可以在你用DATEADD和DATEDIFF函数计算日期时给你一点启发。通过使用这个计算日期的时间间隔的数学方法,我发现为了显示两个日期之间间隔的有用历法是有价值的。注意,这只是计算出这些日期的一种方法。要牢记,还有很多方法可以得到相同的计算结果。假如你有其他的方法,那很不错,要是你没有,我希望这些例子可以给你一些启发,当你要用DATEADD和DATEDIFF函数计算你程序可能要用到的日期时。

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

  附录,其他日期处理方法

  1)去掉时分秒

  declare @ datetime

  set @ = getdate() --'2003-7-1 10:00:00'

  SELECT @,DATEADD(day, DATEDIFF(day,0,@), 0)

  2)显示星期几

  select datename(weekday,getdate())

  3)如何取得某个月的天数

  declare @m int

  set @m=2 --月份

  select datediff(day,'2003-'+cast(@m as varchar)+'-15' ,'2003-'+cast(@m+1 as varchar)+'-15')

  另外,取得本月天数

  select datediff(day,cast(month(GetDate()) as varchar)+'-'+cast(month(GetDate()) as varchar)+'-15' ,cast(month(GetDate()) as varchar)+'-'+cast(month(GetDate())+1 as varchar)+'-15')

  或者使用计算本月的最后一天的脚本,然后用DAY函数区最后一天

  SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)))

  4)判断是否闰年:

  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

  5)一个季度多少天

  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))


  

上一篇: 学习C语言程序设计需要掌握的基本算法
下一篇: 数据结构分而治之算法-快速排序

上一页 1 2

关于我们 | 联系我们 | 加入我们 | 广告服务 | 投诉意见 | 网站导航
Copyright © 2000-2011 21tx.com, All Rights Reserved.
晨新科技 版权所有 Created by TXSite.net