[Mysql] BETWEEN...AND...过滤数据
2023-09-11 14:22:53 时间
BETWEEN匹配范围中所有的值,包括指定的开始值和结束值,这些值可以是数值、文本或者日期
语法格式
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
练习案例数据1
DROP TABLE IF EXISTS purchase_info;
CREATE TABLE purchase_info(
commodity_id VARCHAR(8),
category VARCHAR(16),
colour VARCHAR(16),
purchase_quantity INT,
purchase_date DATE
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
INSERT INTO
purchase_info
(commodity_id,category,colour,purchase_quantity,purchase_date)
VALUE ('c001','clothing','black',150,'2022-04-25')
,('c002','clothing','white',50,'2022-04-05')
,('c003','shoes','white',500,'2022-03-23')
,('c004','shoes','red',200,'2022-04-07')
,('c005','clothing','blue',120,'2022-04-15');
purchase_info表
问题1:查询采购日期在2022年4月1日到2020年4月30日(包括边界日期)的商品记录
SELECT *
FROM purchase_info
WHERE purchase_date >= '2022-04-01'
AND purchase_date <= '2022-04-30';
上述代码可用BETWEEN关键字进行简化,代码如下所示:
SELECT *
FROM purchase_info
WHERE purchase_date BETWEEN '2022-04-01' AND '2022-04-30';
结果展示:
BETWEEN操作符,它需要两个值,即范围的开始值和结束值,可简化取值范围的书写,两端均包含(两个值必须用AND关键字分隔)
问题2:查询采购数量在100到200的商品记录
SELECT *
FROM purchase_info
WHERE purchase_quantity BETWEEN 100 AND 200;
结果展示:
BETWEEN通常用于将取值限制在某个区间内,除了日期,还可以用于数值
注意:在使用BETWEEN时,需要注意的是,在查询精确到秒时,容易出现使用错误
练习案例数据2
DROP TABLE IF EXISTS purchase_time;
CREATE TABLE purchase_time(
commodity_id VARCHAR(8),
purchase_date DATETIME
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
INSERT INTO
purchase_time (commodity_id,purchase_date)
VALUE ('c001','2022-04-25 14:13:38')
,('c002','2022-04-05 09:12:03')
,('c003','2022-03-23 18:00:19')
,('c004','2022-04-30 12:23:01')
,('c005','2022-05-01 08:12:41');
purchase_time表
问题3:查询2022年4月10日到2022年4月30日的所有记录
SELECT *
FROM purchase_time
WHERE purchase_date BETWEEN '2022-04-10' AND '2022-04-30';
结果展示:
仔细观察原始数据表和查询结果,发现查询结果并不包含'2022-04-30 12:23:01'那条记录,因为BETWEEN的AND后连接的日期是限制到日的,则默认为00:00:00,所以这里右侧查询的边界值为'2022-04-30 00:00:00',即不包含12:23:01的那条记录
如果需要精确查询日期,则需要将上述代码修改为如下形式:
SELECT *
FROM purchase_time
WHERE purchase_date BETWEEN '2022-04-10 00:00:00' AND '2022-04-30 23:59:59';
结果展示:
WHERE purchase_date BETWEEN '2022-04-10 00:00:00' AND '2022-04-30 23:59:59'
将日期的查询精确到秒,即可查询到想要的结果
相关文章
- mysql索引总结(3)-MySQL聚簇索引和非聚簇索引
- mysql binary like_MYSQL的binary解决mysql数据大小写敏感问题的方法
- [PHP]如何在百度(BAE)和新浪(SAE)的云平台使用PHP连接MySQL并返回结果数据
- mysql中json_replace函数的使用?通过json_replace对json对象的值进行替换
- 【mysql+pandas】用MySQL命令处理在python中处理DataFrame数据 pandasql库
- MySQL M题1 MySQL常见优化
- MYSQL 查询重复数据
- 关于Mysql 查询所有表的实时记录用于对比2个MySQL 库的数据是否异步
- MySQL 批量删除表
- mysql 不同库不同表字段数据复制
- MySQL的事务
- mysql 查询中文数据
- 基于QT(C++)+MySQL实现(窗体)学生信息管理系统【100010529】
- [转]MySQL常用Json函数和MySQL常用字符串函数
- MySQL将查询出来的一组数据拼装成一个字符串
- Mysql 查询上周的数据,Mysql查询本周的数据
- [mysql]MySQL数据库如何导出
- MYSQL导入csv类型的数据出现The MySQL server is running with the --secure-file-priv option
- 基于easyexcel的MySQL百万级别数据的excel导出功能
- 实践 —— 亲测从 RDS MySQL 通过数据集成导入 MaxCompute
- 行成于思:从Oracle到MySQL
- MySQL统计库下面每个表的数据
- 【数据库】修改mysql默认字符集
- Mysql数据按天分区,定期删除
- 实战:INNOBACKUPEX for mysql 5.6自己主动备份脚本
- Mysql ibd恢复(delete 数据)
- 【MySQL】实验二 简单查询
- 分布式爬虫系统设计、实现与实战:爬取京东、苏宁易购全网手机商品数据+MySQL、HBase存储
- MySQL 8.x 报错 Public Key Retrieval is not allowed 错误的解决方法
- mysql中数据导出成excel文件语句
- Navicat快速将mysql表转为postgresql表(数据+表结构)