假设我有
> ID FromDate ToDate
> -- -------- -------
> 1 01/01/2005 30/6/2007
> 2 01/01/2008 31/12/2009
我想计算这2行中包含的年份。这是第一排的1。5年+第二排的2年=总共3。5年。我怎么能用SQL做到这一点?
答案 0 :(得分:3)
我建议在SQL DateDiff函数中使用365.25来避免闰年问题。
select
SUM((DATEDIFF(d, FromDate, ToDAte)) / 365.25) as 'years-count'
from
mytableofdates
答案 1 :(得分:0)
我认为你最好的选择是使用DATEDIFF(datepart,startdate,enddate)
选择ID,DATEDIFF(mm,StartDate,EndDate)/ 12 来自YourTable
这应该给你的结果。
编辑:假设SQL Server
答案 2 :(得分:0)
我认为你的计算错误 - 首先应该是2。5年?如果是这样,这似乎给你想要的东西(再次在SQL服务器中)
create table YearDiff(ID int, fromDate datetime, toDate datetime)
go
insert into YearDiff values (1, '2005-01-01 00:00:00.000', '2007-06-30 00:00:00.000')
insert into YearDiff values (2, '2008-01-01 00:00:00.000', '2009-12-31 00:00:00.000')
select sum((datediff(ww, fromdate, todate)) / 52.0) from YearDiff
答案 3 :(得分:0)
如果您使用的是Oracle:
SELECT TRUNC(SUM(MONTHS_BETWEEN(t.todate, t.fromDate)) / 12, 1)
FROM TABLE t
TRUNC中的第二个参数是小数位数 - 查询原样是一位小数。
答案 4 :(得分:0)
SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),'1978-09-29')), '%Y')+0 AS age
在此处找到解决方案http://goharsahi.wordpress.com/2007/08/18/calculating-age-from-date-of-birth-in-mysql/