QUERY:Return 如果从出生之日起超过一定年龄的姓名

QUERY: Return name if over a certain age from date of birth

这是一个例子table:

     A        B
   ------  ----------
1 | Name | DOB
2 | John | 01/01/2011
3 | Tom  | 02/02/2002

我需要 return 11 岁以上人员的姓名,仅使用两个可用列。

在我看来,查询应该类似于以下示例,其中 [11 years old] 代表进行选择所需的魔法。

=QUERY(A1:B, "select A where B >[11 years old]", 1)

不幸的是,我无法将带有公式的年龄列添加到数据 table。

请随时提出替代公式。

尝试:

=ARRAYFORMULA(QUERY({A1:A, YEAR(TODAY())-YEAR(B1:B)}, "select Col1 where Col2 >11", 1))


或者只是:

={"Name"; FILTER(A2:A, YEAR(TODAY())-YEAR(B2:B)>11)}

看你怎么读题了,如果你把天和月都算进去,说某人11岁零一天是'over 11 years old',那么要么

=ArrayFormula(QUERY({A2:A,date(year(B2:B)+11,month(B2:B),day(B2:B))},"select Col1 where Col2 < date '"&TEXT(TODAY(),"yyyy-mm-dd")&"'", 0))

=ArrayFormula(QUERY({A2:A,edate(B2:B,12*11)},"select Col1 where Col2 < date '"&TEXT(TODAY(),"yyyy-mm-dd")&"'", 0))

请注意,对于闰年 2 月 29 日出生的人,date 和 edate 似乎给出了不同的结果。 2004-02-29 'over 11' 出生的人是 2015-03-01 还是刚好 11 岁?我不确定,我不知道是否对此有普遍共识。

今天在哪里() = 2022-05-13