当前位置: 移动技术网 > IT编程>数据库>MSSQL > SQL Server日期计算第1/2页

SQL Server日期计算第1/2页

2017年12月12日  | 移动技术网IT编程  | 我要评论

什么是cpi指数,清风入梦之怡殇,双弩精灵升级路线


去年的最后一天  
连接上面的例子,为了要得到去年的最后一天,你需要在今年的第一天上减去3毫秒。  
select  dateadd(ms,-3,dateadd(yy,  datediff(yy,0,getdate()),  0))  
本月的最后一天  
现在,为了获得本月的最后一天,我需要稍微修改一下获得上个月的最后一天的语句。修改需要给用datediff比较当前日期和“1900-01-01”返回的时间间隔上加1。通过加1个月,我计算出下个月的第一天,然后减去3毫秒,这样就计算出了这个月的最后一天。这是计算本月最后一天的sql脚本。  
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))  

2

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网