假设生日存储为DateTime
Select Count(*)From ( Select Id, Floor(DateDiff(d, BirthDate, GetDate()) / 365.25) As Age From People ) As EmpAgesWhere EmpAges Between 20 And 40
也可以在没有派生表的情况下这样编写:
Select Count(*)From PeopleWhere Floor(DateDiff(d, BirthDate, GetDate()) / 365.25) Between 20 And 40
还有一种方法是使用DateAdd。正如OMG Ponies和ck所提到的,这将是最有效的方法,因为它可以使用dateOfBirth上的索引(如果存在的话)。
Select Count(*)From PeopleWhere DateOfBirth Between DateAdd(yy, -40, GetDate()) And DateAdd(yy, -20, GetDate())
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)