如何 select 日期在 MySQL 范围内?

How to select dates within a range in MySQL?

我创建了以下 table:

create table example
(
        code           varchar(7),
        date           date,
CONSTRAINT pk_date PRIMARY KEY (code)
);

我插入了数据:

insert into example(code, date) 
values('001','2016/05/12');
insert into example(code, date) 
values('002','2016/04/11');
insert into example(code, date) 
values('003','2017/02/03');

问题是:如何 select 以前的日期从今天算起五个月?

您可以使用BETWEEN获取日期在以下范围内的所有数据:

[Five Months From Today, Today]

SELECT 
*
FROM 
example
WHERE `date` BETWEEN  DATE_SUB(DATE(NOW()),INTERVAL 5 MONTH) AND DATE(NOW());

以防万一你不熟悉BETWEEN

SELECT 2 BETWEEN 1 AND 3';

结果: 1(表示 TRUE)

SELECT 1 BETWEEN 2 AND 3;

结果: 0(表示错误)

警告:

虽然2介于1和3之间。但是下面会return 0.

SELECT 2 BETWEEN 3 AND 1;

结果: 0(错误)

您应该在 AND 之前使用较低的值,在 AND 之后使用较高的值。

SELECT *
FROM example
WHERE PERIOD_DIFF(date_format(now(), '%Y%m', date_format(date, '%Y%m')) <= 5