很多文章都说年龄计算公式为:天数/365,实际上是不准确的,因为有闰年,闰年规则如下:
1、非整百年份:能被4整除的是闰年。(如2004年就是闰年,2001年不是闰年)
2、整百年份:能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)
所以,按上面的算法,年龄越大,误差越大。
当然还有其他规则,比如能否被3200,172800等整除,人也没有那么长的寿命,就不需要考虑这些了。
大概就是4年一闰,但又不是绝对4年一闰,这个除数就取为365.24,再向下取整,以下是SQL的计算公式:
SELECT FLOOR(DATEDIFF(d,‘1980-1-1‘,GETDATE()) / 365.24)
对比以下两条SQL,分别是跨越了2000年(闰年)和2100年(非闰年)的百岁老人,都计算精确:
SELECT DATEDIFF(d,‘1911-1-1‘,‘2011-1-1‘), DATEDIFF(d,‘1911-1-1‘,‘2011-1-1‘) / 365.24, FLOOR(DATEDIFF(d,‘1911-1-1‘,‘2011-1-1‘) / 365.24) SELECT DATEDIFF(d,‘2011-1-1‘,‘2111-1-1‘), DATEDIFF(d,‘2011-1-1‘,‘2111-1-1‘) / 365.24, FLOOR(DATEDIFF(d,‘2011-1-1‘,‘2111-1-1‘) / 365.24)
原文:https://www.cnblogs.com/info-tech/p/14823372.html