MySQL-如何查询以获取特定年份之间的行

时间:2017-11-15 22:58:13

标签: mysql

我试图找回年份范围之间的行,例如0-5岁,5-10岁,10-15岁等。

到目前为止,我只能在0-5之间进行产品,但需要一些帮助才能在5到10年之间查询等。

SELECT * 
FROM users 
WHERE start_date >= DATE_SUB(NOW(),INTERVAL 5 YEAR)

我尝试过使用BETWEEN功能,但可能使用不当。接受建议。

我并不是日期中硬编码值的粉丝,因为我不想每隔几年就回去更改一次。

3 个答案:

答案 0 :(得分:1)

您可以使用BETWEEN

SELECT *
FROM users
WHERE (start_date BETWEEN NOW() AND DATE_SUB(NOW(), INTERVAL 5 YEAR))

然后是你的下一个间隔:

SELECT *
FROM users
WHERE (start_date BETWEEN DATE_SUB(NOW(), INTERVAL 5 YEAR) AND DATE_SUB(NOW(), INTERVAL 10 YEAR))

答案 1 :(得分:1)

假设start_date是DATE数据类型(不是DATETIME或TIMESTAMP)

五年前到今天

 WHERE start_date >  DATE(NOW()) + INTERVAL -5 YEAR
   AND start_date <= DATE(NOW()) + INTERVAL  0 YEAR
十年前的五年前

 WHERE start_date >  DATE(NOW()) + INTERVAL -10 YEAR
   AND start_date <= DATE(NOW()) + INTERVAL -5  YEAR

答案 2 :(得分:0)

0 - 5

SELECT * FROM users
WHERE
start_date BETWEEN (CURDATE() - INTERVAL 5 YEAR) AND CURDATE();

5 - 10

SELECT * FROM users
WHERE
start_date BETWEEN (CURDATE() - INTERVAL 10 YEAR) AND (CURDATE() - INTERVAL 5 YEAR);

10 - 15

SELECT * FROM users
WHERE
start_date BETWEEN (CURDATE() - INTERVAL 15 YEAR) AND (CURDATE() - INTERVAL 10 YEAR);