当前位置: 首页 > news >正文

MySQL中between and的基本用法、范围查询

文章目录
  • 一、between and语法
  • 二、使用示例
    • 2.1、between and数值查询
    • 2.2、between and时间范围查询
    • 2.3、not between and示例

BETWEEN AND操作符可以用于数值、日期等类型的字段,包括边界值

一、between and语法

MySQL中的BETWEEN AND操作符用于在两个值之间选择数据,包括边界值。其基本语法如下:

[NOT] BETWEEN 取值1 AND 取值2

其中:

  • NOT:可选参数,表示指定范围之外的值。如果字段值不满足指定范围内的值,则这些记录被返回。
  • 取值1:表示范围的起始值。
  • 取值2:表示范围的终止值。

使用场景:
between…and的使用一般有两种情况,一个是数值范围,一个是时间范围
当查询时间范围时要注意可能会遇到时间精度问题,具体参考下面示例。

二、使用示例

数据准备

create table user( id int NOT NULL auto_increment primary key comment '主键id', `name` varchar(10) NULL comment '姓名', age int NULL comment '年龄', salary int NULL comment '工资', create_time datetime comment '创建时间戳' ); insert into user(name,age,salary,create_time) values ('张三',23,100,'2024-10-29 10:01:22'), ('李四',24,200,'2024-10-30 09:44:22'), ('王五',25,300,'2024-10-30 10:01:22'), ('赵六',26,400,'2024-10-31 07:01:23');

表数据如下

2.1、between and数值查询

between…and…是支持数值查询的,当字段类型是数值时 between A and B等同于>=A and <=B

当between and用于数值查询时,常用于字段类型为int、decimal等。

-- 查询用户表中年龄在24到25之间的用户 select * from user where age between 24 and 25; 等同于 select * from user where age >= 24 and age <= 25;

查询结果如下:

2.2、between and时间范围查询

注意:

  • 当日期字段为date类型时,即时间格式为yyyy-MM-dd, between ‘2024-10-29’ and ‘2024-10-30’ 相当于>=‘2024-10-29’ and <=‘2024-10-30’
  • 当日期字段为datetime、timestamp类型时,即时间格式为yyyy-MM-dd HH:mm:ss,between ‘2024-10-29’ and ‘2024-10-30’ 相当于>=‘2024-10-29 00:00:00’ and <=‘2024-10-30 00:00:00’。所以当between and对datetime、timestamp类型查询时,一定要注意手动拼接时分秒,否则查询数据可能不符合预期。

先上一个错误示例:对datetime类型查询不带时分秒

-- 查询用户表中创建时间在2024-10-29到2024-10-30之间的数据 select * from user where create_time between '2024-10-29' and '2024-10-30'; 等同于 select * from user where create_time >= '2024-10-29 00:00:00' and create_time <= '2024-10-30 00:00:00';

查询结果:

从上面示例可以看出,还有两条数据时间是在2024-10-30日范围内,但是并没有被查询出来。

所以需要注意:当between and对datetime、timestamp类型查询时,一定要注意手动拼接时分秒,否则查询数据可能不符合预期。

正确示例

-- 查询用户表中创建时间在2024-10-29到2024-10-30之间的数据 select * from user where create_time between '2024-10-29 00:00:00' and '2024-10-30 23:59:59'; 等同于 select * from user where create_time >= '2024-10-29 00:00:00' and create_time <= '2024-10-30 23:59:59';

查询结果:

2.3、not between and示例

not between and表示指定范围之外的值。not between A and B相当于 < A or >B。

示例:查询年龄不在24到25之间的用户

-- 查询用户表中年龄不在24到25之间的用户 select * from user where age not between 24 and 25; 等同于 select * from user where age < 24 or age > 25;

查询结果如下:

http://www.cnnetsun.cn/news/1360999.html

相关文章:

  • ArrayList之模仿电影系统综合案例
  • @SpringBootApplication 与 SPI 机制的终极解密
  • 和BS架构宠物健康咨询系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • 决胜2026:10大智能拓客系统硬核横评,帮老板精准选对获客工具
  • JavaEE零基础入门指南
  • 嵌入式AI开发必看:杜绝幻觉,才是工业级IDE的核心底气
  • MCP服务开发与AI集成
  • 开源TOP20项目(2026.03.09-2026.03.15)
  • 微软 Planetary Computer:地理空间数据服务的创新与应用潜力
  • 可调谐石墨烯超材料吸收体的FDTD仿真源文件
  • 如何学习计算机(民办普通大学生心得)
  • PHPStudy2018环境部署全攻略
  • 中控SCADA-MQTT驱动采集与MQTT转发应用详解
  • mathtype中omml2mml缺失问题解决
  • 动力域-混动系统/动力域半实物仿真测试
  • 从 AI 终端爆发看人机交互演进:薄膜开关为何仍是工业控制的核心方案?
  • 小白入门:无刷直流电机BLDC,我从无人机开始学的那些事儿
  • 解决 ScrollView嵌套RecyclerView设置nestedScrollingEnabled=false数据显示不全问题
  • GNS3 入门指南
  • 并联机器人设计快速上手篇:利用iRobotCAM完成机器人夹爪的设计,无缝对接MuJoCo
  • 【2026年-11期】Where lies the future of humanity in the age of AI?
  • Chrome浏览器整页截图方法(MacOS)
  • 355. Java IO API -去除路径中的冗余信息
  • 面对大厂抄袭的指控,OpenClaw是否有足够的知识产权法律武器来保护自己?还是只能依靠舆论?
  • 康复训练 7
  • AI正在改变这10个行业,你的工作在其中吗?
  • 数字化时代,企业的商业模式建设
  • 计算机毕业设计之springboot基于web的新生报到系统设计与实现
  • 修改用户密码
  • 储能系统——04 升压换流一体机和箱变设计分析