sql server中的年份计算 [英] Year Calculation in sql server

查看:357
本文介绍了sql server中的年份计算的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



我必须在sql server中计算年差,但是这样的话。



如果我的日期类似于2010年9月5日,而下一个日期是2011年1月1日那么它给我1年的日期差异功能,但我不喜欢我想要这个。



我想要的是:如果日期是2010年9月5日,下一个日期是2011年9月5日那么应该给1年。

有谁能让我知道如何解决我的问题?



提前感谢



Mohd Wasif

解决方案

你可以使用SQL DATEDIFF [ ^ ]



我使用了以下内容,因为它是在它之间的11个月之间它会让我 0 年< br $> b $ b

 选择 datediff(yy,Getdate(),DAteadd(MM,  11 ,getdate()))


Hi Mohd Wasif,





  SELECT  *  FROM  DATE_SAMPLE  WHERE  SAMPLE_DATE   '< /跨度> <温泉n class =code-string> 2003-04-09' 
AND ' 2003-04-10'


您好,

请尝试下面的代码,你可以得到你想要的结果..



 声明  @ d1   datetime  @ d2   datetime  @ y   int  @ m   int  @ d   int  
set @ d1 = < span class =code-string>' 2010-09-05'
set @ d2 = ' 2013-09-05'

set @ y = datediff(年, @ d1 @ d2 ) - 1
设置 @ m = datediff(月,dateadd(年, @ y @ d1 ), @ d2
if dateadd(月, @ m ,dateadd(年, @ y @ d1 ))> @ d2 set @ m = @ m - 1
set < span class =code-sdkkeyword> @ d = datediff(day,dateadd(month, @ m ,dateadd(year, @ y @ d1 )), @ d2
如果 @ m = 12 < span class =code-keyword> set @ y + = 1
print cast( @ y as < span class =code-keyword> nvarchar )+ ' year(s)'


Hi all,

I have to calculate year difference in sql server but something like this.

If I have date like 05/September/2010 and next date is 01/January/2011 then it is giving me 1 year from date difference function, but I don''t want this.

What I want is: if date is 05/September/2010 and next date is 05/September/2011 then it should give 1 year.
Can anyone let me know how to sort out my problem?

Thank in advance

Mohd Wasif

解决方案

you can use SQL DATEDIFF[^]

I have used following, As it''s a span of 11 months between it''s returning me 0 Year

select datediff(yy,Getdate(),DAteadd(MM,11,getdate()))


Hi Mohd Wasif,


SELECT * FROM DATE_SAMPLE WHERE SAMPLE_DATE between '2003-04-09'
AND '2003-04-10'


Hello ,
Please try this code as below you get result as you want ..

declare @d1 datetime, @d2 datetime, @y int, @m int, @d int
set @d1 = '2010-09-05'
set @d2 = '2013-09-05'

set @y = datediff(year, @d1, @d2) - 1
set @m = datediff(month, dateadd(year, @y, @d1), @d2) 
if dateadd(month, @m, dateadd(year, @y, @d1)) > @d2 set @m = @m - 1
set @d = datediff(day, dateadd(month, @m, dateadd(year, @y, @d1)), @d2)
if @m = 12 set @y += 1
print cast(@y as nvarchar) + ' year(s) '


这篇关于sql server中的年份计算的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆