SQL语句如何根据出生日期计算年龄

这是一个坑。
使用 dateiff(year,birthday,getdate()) 是不准确的。
准确地说,使用 FLOOR(datediff(DY,birthday,getdate())/3 6 5 .2 5 )。
Oracle 使用 extract (sysdate 中的年份) 来更加简洁。

实用提醒:选择正确的方法,不要算错年龄。

求SQL语句:如何根据出生日期来计算年龄,和70年代出生占年龄的百分比

记得小时候,奶奶总是问我几岁了,我就掰着手指头数。
后来,我学习了一些计算机技能,发现用代码计算年龄还是蛮有趣的。
你看,这条SQL语句一行就可以完成。

例如,假设有一个名为“EmployeeInfo”的表,其中包含一个名为“csrq”的“出生日期”字段。
如果你想计算每个员工的年龄,可以使用这个:
sql 选择 csrq 美国出生日期, DATEDIFF(年份, csrq, GETDATE()) AS 年龄 来自员工信息;
该函数“DATEDIFF(year, csrq, GETDATE())”从今天的日期中减去出生日期以获得年数。
简单吧?
等等,还有一件事。
该公司上次进行统计时,想要计算 2 0 世纪 7 0 年代出生的人占总人口的百分比。
我使用了一个小技巧:
sql 选择 rs7 0 1 00 / zrs 美国百分比 来自( 选择金额(CASE WHEN csrq LIKE '1 9 7 0%' THEN 1 ELSE 0 END)AS rs7 0, COUNT(csrq) AS zrs 来自员工信息 ) 作为 a;
这个子查询首先计算1 9 7 0年代出生的人数(rs7 0),然后计算总人数(zrs),最后除以1 00,你看,1 9 7 0年代出生的人口占总人口的百分比就出来了。

我突然想到,如果表中数据很多的话,这个查询会不会很慢?也许我应该添加一些索引。

例如,假设“员工信息”表有 1 00 万条数据,运行此查询需要 5 秒。
如果出生日期字段未建立索引,您可能需要再次尝试建立索引。

看,这些小事有时很有趣。