我在MySQL数据库中有一个表,其中包含他们的出生率。 例如'1991-11-21'
我有两个值,一个是最小年龄(如22),另一个是最大年龄(如33)。 我想创建一个查询,让我获得最小年龄值和最大年龄之间的所有记录。
我正在使用NodeJs。 任何想法?
答案 0 :(得分:1)
一种解决方案是在MySQL中完成所有工作并将变量注入MySQL语句
要做到这一点,您需要结合这些答案
1)获取x年前的日期
Selecting all records from one year ago till now
2)选择日期范围
之间的结果Select mysql query between date?
你应该得到这样的查询:
select *
from *table_name*
where *datetime_column*
between DATE_SUB(NOW(),INTERVAL 22 YEAR)
and DATE_SUB(NOW(),INTERVAL 33 YEAR);
注意:你可能需要在第二个日期(33 + 1)添加一年才能获得33岁的所有人的全部范围(直到你34岁的那一天你才33岁)< / p>
或者,如果您愿意,可以在JS中计算您的日期,但根据您的操作方式,您可能需要格式化日期,以便它们可以在您的查询中使用
答案 1 :(得分:-1)
试试这个:
SELECT age, birthday FROM tablename WHERE age > 22 AND age < 33
我采取了错误的方式:
我认为这是正确的:
SELECT *, TIMESTAMPDIFF(YEAR,birthday,CURDATE()) as age FROM student WHERE TIMESTAMPDIFF(YEAR,created,CURDATE()) > 22 AND TIMESTAMPDIFF(YEAR,birthday,CURDATE()) < 33