我试图找回年份范围之间的行,例如0-5岁,5-10岁,10-15岁等。
到目前为止,我只能在0-5之间进行产品,但需要一些帮助才能在5到10年之间查询等。
SELECT *
FROM users
WHERE start_date >= DATE_SUB(NOW(),INTERVAL 5 YEAR)
我尝试过使用BETWEEN功能,但可能使用不当。接受建议。
我并不是日期中硬编码值的粉丝,因为我不想每隔几年就回去更改一次。
答案 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);