SQL统计FromDATE到ToDate字段的年数
如果我有SQL统计FromDATE到ToDate字段的年数,sql,Sql,如果我有 > ID FromDate ToDate > -- -------- ------- > 1 01/01/2005 30/6/2007 > 2 01/01/2008 31/12/2009 我想计算这两行中包含的年份。第一排为1.5年+第二排为2年=总共3.5年。如何使用SQL实现这一
> ID FromDate ToDate
> -- -------- -------
> 1 01/01/2005 30/6/2007
> 2 01/01/2008 31/12/2009
我想计算这两行中包含的年份。第一排为1.5年+第二排为2年=总共3.5年。如何使用SQL实现这一点?我认为最好的选择是使用DATEDIFF(datepart、startdate、enddate) 选择ID,DATEDIFF(mm,StartDate,EndDate)/12 从你的桌子上 这应该给你的结果后
编辑:假设使用SQL Server,我认为最好使用DATEDIFF(datepart、startdate、enddate) 选择ID,DATEDIFF(mm,StartDate,EndDate)/12 从你的桌子上 这应该给你的结果后
编辑:假设SQL Server我想你的计算错了-第一个应该是2.5年?如果是这样的话,这似乎给出了您想要的大致情况(同样是在SQL server中)
我想你的计算错了-第一个应该是2.5年?如果是这样的话,这似乎给出了您想要的大致情况(同样是在SQL server中)
如果您使用的是Oracle:
SELECT TRUNC(SUM(MONTHS_BETWEEN(t.todate, t.fromDate)) / 12, 1)
FROM TABLE t
TRUNC中的第二个参数是小数位数-查询按原样是一位小数 如果您使用的是Oracle:
SELECT TRUNC(SUM(MONTHS_BETWEEN(t.todate, t.fromDate)) / 12, 1)
FROM TABLE t
TRUNC中的第二个参数是小数位数-查询按原样是一位小数 我建议在SQL DateDiff函数中的天数使用365.25,以避免闰年问题
select
SUM((DATEDIFF(d, FromDate, ToDAte)) / 365.25) as 'years-count'
from
mytableofdates
我建议在SQL DateDiff函数中使用365.25作为天数,以避免闰年问题
select
SUM((DATEDIFF(d, FromDate, ToDAte)) / 365.25) as 'years-count'
from
mytableofdates
在这里找到了解决方案
此处找到的解决方案使用年和月日期差异(使用年末/月边界)给出第1行=2年/29个月,第2行=1年/23个月。请问你什么时候可以从中获得1.5/2年?你使用的是什么SQL风格?SQL Server?神谕MySQL?别忘了闰年。。。使用年和月日期差异(使用年末/月边界)给出第1行=2年/29个月,第2行=1年/23个月。请问你什么时候可以从中获得1.5/2年?你使用的是什么SQL风格?SQL Server?神谕MySQL?别忘了闰年。。。这与问题有什么关系?您不是指问题中的列,也不是指如何组合多行数据。这与问题有何关系?您不是指问题中的列,也不是指如何组合多行数据。