如何 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
我创建了以下 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